这个程序没有多少技术含量,但是还是花了我2个小时的时间,没办法呀,就是这个水平。
数据结构,算法……
K&R的《The C Programming Language》的6.3 Array of Structures中的两个示例程序,就是结构数组和结构体指针作为函数参数……
- /*输入:输入节点的数目node_num,一串不定长度的整数input_int
-
*输出:一串整数中,首先出现的node_num个不同整数,和它们的输入次数(当输入超过node_num个
-
*不同整数时,后面的数据将不会统计)。
-
*退出:输入node_num+1个不同的整数时
-
*/
-
#include<stdio.h>
-
#include<stdlib.h>
-
-
struct node_type{
-
int this_node;
-
int cnt;
-
}node;
-
-
int print_array(int node_num, struct node_type node_array[]);
-
int search(int input, int node_num, struct node_type node_array[]);
-
-
int
-
main(int argc, char *argv[])
-
{
-
char this_char;
-
int input_int,searched_num,cnt1,cnt2,cnt3,node_num;
-
int FLAG = 0, i;
-
-
printf("Please input the number of node~\n");
-
scanf("%d", &node_num);
-
struct node_type node_array[node_num];
-
-
//init the array.the value 0 should not in the input_int
-
for(i=0; i<node_num; i++){
-
node_array[i].this_node = 0;
-
node_array[i].cnt = 0;
-
}
-
struct node_type *node_array_p=node_array;
-
FLAG = 0;
-
printf("Please input a serious of datas:\n");
-
-
for(;;){
-
scanf("%d", &input_int);
-
if((searched_num=search(input_int,node_num, node_array_p))>=node_num){
-
node_array[FLAG].this_node = input_int;
-
node_array[FLAG].cnt++;
-
if(FLAG++>=node_num)
-
break;
-
}
-
else//extice
-
{
-
if(searched_num < node_num){
-
node_array[searched_num].cnt++;
-
}
-
}
-
}
-
-
print_array(node_num, node_array_p);
-
return 1;
-
}
-
-
int
-
search(int input_int, int node_num, struct node_type node_array[] )
-
{
-
int i;
-
for(i=0; i<node_num; i++){
-
if(node_array[i].this_node ==input_int)
-
return i;
-
}
-
return node_num;
-
}
-
-
int
-
print_array(int node_num, struct node_type node_array[])
-
{
-
int i;
-
for(i=0; i<node_num; i++){
-
printf("This node is :%d cnt is :%d\n",node_array
-
-
[i].this_node,node_array[i].cnt);
-
}
-
printf("\n");
-
return 1;
-
}
阅读(800) | 评论(0) | 转发(0) |