Chinaunix首页 | 论坛 | 博客
  • 博客访问: 436220
  • 博文数量: 67
  • 博客积分: 2468
  • 博客等级: 上尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-05 01:21
文章分类

全部博文(67)

文章存档

2013年(1)

2012年(65)

2011年(1)

分类: C/C++

2012-02-25 22:52:06

这个程序没有多少技术含量,但是还是花了我2个小时的时间,没办法呀,就是这个水平。
数据结构,算法……
K&R的《The C Programming Language》的6.3 Array of Structures中的两个示例程序,就是结构数组和结构体指针作为函数参数……

  1. /*输入:输入节点的数目node_num,一串不定长度的整数input_int
  2.  *输出:一串整数中,首先出现的node_num个不同整数,和它们的输入次数(当输入超过node_num个
  3.  *不同整数时,后面的数据将不会统计)。
  4.  *退出:输入node_num+1个不同的整数时
  5.  */
  6. #include<stdio.h>
  7. #include<stdlib.h>

  8. struct node_type{
  9.     int this_node;
  10.     int cnt;
  11. }node;

  12. int print_array(int node_num, struct node_type node_array[]);
  13. int search(int input, int node_num, struct node_type node_array[]);

  14. int
  15. main(int argc, char *argv[])
  16. {
  17.     char this_char;
  18.     int input_int,searched_num,cnt1,cnt2,cnt3,node_num;
  19.     int FLAG = 0, i;

  20.     printf("Please input the number of node~\n");
  21.     scanf("%d", &node_num);
  22.     struct node_type node_array[node_num];

  23.     //init the array.the value 0 should not in the input_int
  24.     for(i=0; i<node_num; i++){
  25.         node_array[i].this_node = 0;
  26.         node_array[i].cnt = 0;
  27.     }
  28.     struct node_type *node_array_p=node_array;
  29.     FLAG = 0;
  30.     printf("Please input a serious of datas:\n");

  31.     for(;;){
  32.         scanf("%d", &input_int);
  33.         if((searched_num=search(input_int,node_num, node_array_p))>=node_num){
  34.             node_array[FLAG].this_node = input_int;
  35.             node_array[FLAG].cnt++;
  36.             if(FLAG++>=node_num)
  37.                 break;
  38.         }
  39.         else//extice
  40.         {
  41.             if(searched_num < node_num){
  42.                 node_array[searched_num].cnt++;
  43.              }
  44.         }
  45.     }

  46.     print_array(node_num, node_array_p);
  47.     return 1;
  48. }

  49. int
  50. search(int input_int, int node_num, struct node_type node_array[] )
  51. {
  52.     int i;
  53.     for(i=0; i<node_num; i++){
  54.         if(node_array[i].this_node ==input_int)
  55.             return i;
  56.     }
  57.     return node_num;
  58. }

  59. int
  60. print_array(int node_num, struct node_type node_array[])
  61. {
  62.     int i;
  63.     for(i=0; i<node_num; i++){
  64.         printf("This node is :%d    cnt is :%d\n",node_array

  65. [i].this_node,node_array[i].cnt);
  66.     }
  67.     printf("\n");
  68.     return 1;
  69. }

阅读(699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~