请编写函数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,t,j=0,*p=a;
t=p[[0];
for(i=0;i<=n;i++)
if(t==p[i]);
else
{a[j]=t;t=p[i];j++
}
if(i>=n)
a[i]=t;
return j;
}
main()
{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
printf("The original data :\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThe data after deleted :\n");
for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");
}
我写的
#include <stdio.h>
#define N 80
int fun(int a[], int n)
{int b=0,i,j,t;
for(i=0;i<n;i++)
if(a[i]>a[i+1])
{t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if(a[i]==a[j])
{a[j]=a[j+1];
b++;
}
n=n-b;
return n;
}
main()
{ int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;
printf("The original data :\n");
for(i=0; i<n; i++)printf("%3d",a[i]);
n=fun(a,n);
printf("\n\nThe data after deleted :\n");
for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");
}
为什么把啊【i】=t放到最后呢??这样顺序不就不是降序了吗??请您帮忙
本回答被网友采纳