//请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩下一个。函数返回删除后数组中元素的个数。
int fun(int a[], int n)
{
int i, j,k;
for(i=0; i<n; i++){//对每个元素
for(j=i+1; j<n; j++){//找它后面的元素
if(a[i]==a[j]){//找到相同的就把后面的数据向前挪,元素个数减少1
--n;
for(k=j; k<n; k++)
a[k] = a[k+1];
}
}
}
return n;//返回剩下的元素个数
}
{
int i, j,k;
for(i=0; i<n; i++){//对每个元素
for(j=i+1; j<n; j++){//找它后面的元素
if(a[i]==a[j]){//找到相同的就把后面的数据向前挪,元素个数减少1
--n;
for(k=j; k<n; k++)
a[k] = a[k+1];
}
}
}
return n;//返回剩下的元素个数
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-12-27
#include "stdio.h"
void fun(int a[],int n)
{
int i,j;
int count = 0;
for(i = 0;i < n - 1;i ++)
{
for(j = i + 1;j < n;j ++)
{
if(a[i] == a[j])
{
count ++;
for(;j < n - 1;j ++)//如果仅需要返回结束后剩余的个数此循环可以不要
{
a[j] = a[j + 1];
}
}
}
}
printf("%d\n",n - count);
}
int main()
{
int a[10] = {1,2,3,3,5,6,3,8,1,1};
fun(a,10);
}
void fun(int a[],int n)
{
int i,j;
int count = 0;
for(i = 0;i < n - 1;i ++)
{
for(j = i + 1;j < n;j ++)
{
if(a[i] == a[j])
{
count ++;
for(;j < n - 1;j ++)//如果仅需要返回结束后剩余的个数此循环可以不要
{
a[j] = a[j + 1];
}
}
}
}
printf("%d\n",n - count);
}
int main()
{
int a[10] = {1,2,3,3,5,6,3,8,1,1};
fun(a,10);
}
第2个回答 2010-12-27
int fun(int a[], int n)
{
int i, j,k;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(a[i]==a[j])
{
n--;
for(k=j; k<n; k++)
a[k] = a[k+1];
}
return n;
}
{
int i, j,k;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(a[i]==a[j])
{
n--;
for(k=j; k<n; k++)
a[k] = a[k+1];
}
return n;
}