以下程序的功能是:删去一维数组中所有相同的数,使相同的数只剩一个。数组中的数已按由小到大的顺序排列,函数fun返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6

admin2009-01-15  31

问题 以下程序的功能是:删去一维数组中所有相同的数,使相同的数只剩一个。数组中的数已按由小到大的顺序排列,函数fun返回删除后数组中数据的个数。
   例如,若一维数组中的数据是:
                         2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。请填空。
   #include  <stdio.h>
   #define N 80
   int fun(int a[], int n)
   {   int i,j=1;
       for(i=1;i<n;i++)
           if(a[j-1] 【  】  a)  a[j++]=a;
        【  】;
   }
   main()
   {  int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;
      printf("The original data :\n");
      for(i=0;i<n;i++) printf("%3d",a);
      n=fun(a,n);
      printf("\nThe data after deleted :\n");
      for(i=0; i<n; i++)  printf("%3d",a);  printf("\n\n");
   }

选项

答案! = return j

解析 函数fun中,变量j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以订语句中的条件是a[j-1]! =a,其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,a要添加到新数组中。该算法只能用于数组已排序的题目中。
转载请注明原文地址:https://jikaoti.com/ti/cRS0FFFM
0

相关试题推荐
最新回复(0)