请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是:1,1,1,2,2,2,3, 4,4,5,5,6,6,7,7,8,9,9,

admin2010-05-05  31

问题 请补充函数fun(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
   例如,若一维数组中的数据是:1,1,1,2,2,2,3, 4,4,5,5,6,6,7,7,8,9,9,10,10。
   删除后,数组中的内容应该是:1,2,3,4,5,6,7, 8,9,10。
   注意:部分源程序给出如下。
   请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
   试题程序:
       #include<stdio.h>
       #define N 80
       int fun(int a[],int n)
       {
          int i, t,j=0;
          t=a[0];
          for(i=1;i<n;i++)
              if(【  】)
                    ;
              else
              {
             【  】;
                 t=a;
              }
          a[j++]=t;
          return j;
       }
       main()
       {
          int a[N]={1,1,2,2,2,3,4,4,5,5,6,6,6,
                    7,7,8,9,9,10,10},i,n=20;
          printf("The original data:\n");
          for(i=0; i<n; i++)
             printf("%4d",a);
             n=fun(a,n);
             printf("\n\nThe data after deleted ;
                    \n");
             for (i=0;i<n;i++)
                printf("%4d",a);
             printf("\n");
       }

选项

答案t==a[i] a[j++]=t

解析 第一空:本题的特点是,数组中的数已按从小到大的顺序排列,所以如果有相同的数,也是连在一起,而不是分散的。将一个数与它后面的数比较,如果相同,则什么都不做。第二空:如果不相同,则将这个数记录下来,仍然存在数组a中,此时并不会覆盖还没有进行处理的数。注意,数组下标j自加1。
转载请注明原文地址:https://kaotiyun.com/show/aHID777K
0

最新回复(0)