C语言编程问题,初学者,不太会,谢谢

编写一个函数,删去输入的一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。在主函数输入一个有序数组,接着调用该自定义... 编写一个函数,删去输入的一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。在主函数输入一个有序数组,接着调用该自定义函数,最后输出删除重复数据后的数组元素。
如:输入的数组元素为:9 9 9 8 6 6 0 0 0 -2 -2
打印的结果为:9 8 6 0 -2
展开
 我来答
听不清啊
高粉答主

2020-06-09 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

编写一个函数,删去输入的一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。在主函数输入一个有序数组,接着调用该自定义函数,最后输出删除重复数据后的数组元素。如:输入的数组元素为:999866000-2-2打印的结果为:9860-2


这个程序的实现是比较简单的。因为数组中的数已按由小到大的顺序排列了。所以,只要找到与前一个数不相等的数,此数才是“有效”的。扫描完整个数组——就可以进行输出了:

#include<stdio.h>

int main()

{ int i,j,n=11,a[11]={9,9,9,8,6,6,0,0,0,-2,-2};

  for(i=j=1; j<n; j++)

  {while(a[j]==a[i-1])j++;

   a[i++]=a[j];

  }

  for(j=0;j<i-1;j++)

  printf("%d ",a[j]);

  return 0;

}

小黑哎啊
科技发烧友

2020-06-09 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1642
采纳率:74%
帮助的人:360万
展开全部

#include<stdio.h>

int sort(int *a,int n)

{

int j,i;

for(i=1,j=0;i<n;i++)

if(a[i]!=a[j])

a[++j]=a[i];

return j+1;

}

int main()

{

int n=0,a[100],num;

do{

scanf("%d",&a[n++]);

}while(getchar()!='\n');

num=sort(a,n);

for(int i=0;i<num;i++)

printf("%d ",a[i]);

printf("\n剩余%d个数\n",num);

return 0; 

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式