C语言,将已知数组内容复制到另一个新数组,使复制产生的新数组包含已知数组全部出现过的值,而又不重复。

题目就是这样的,没有说已知数组是什么,而且我们刚开始学数组,应该不能用动态数组之类的东西orz~~~... 题目就是这样的,没有说已知数组是什么,而且我们刚开始学数组,应该不能用动态数组之类的东西orz~~~ 展开
 我来答
这个人真不是我
推荐于2017-11-29 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:56.4万
展开全部

数组里面是整数吗?根据你的代码,有些错误需要指出:

  1. #define n 10; 这句话不用加分号,加了就错了。

  2. for(i=0;a[j]!=a[i];i++)
    b[j]=a[j];

    这句话完全是算法错误。

    你是想实现当不重复的输入,如果你用a[i]和a[j]比,就不对了。

    假设输入1234567891

    第一次,j=0,i=0;a[i]==a[j],所以循环跳出。

    第二次,j=1,i=0;a[j]!=a[i],所以b[j]=a[j],就是给b[1]赋值了,b[0]永远没有赋值,是吧?这就是错误所在。

    所以你要在前面加一句b[0]=a[0]。

  3. 还有问题就是你只要遇到重复的,就会跳出循环,然后对应的b[j]并没有赋值,所以你的算法还是有很大的问题。下面是我的代码。


  4. #include<stdio.h>

  5. #define N 10

  6. void main()

  7. {

  8. int i,j,a[N],b[N];

  9. int index=0;//这个变量指向b的下标

  10. for(i=0;i<N;i++)

  11. {

  12. scanf("%d",&a[i]);

  13. }

  14. for(i=0;i<N;i++)//用i指向数组a的下标

  15. {

  16. for(j=0;a[i]!=b[j] && j<i;j++)//用j指向数组b的下标

  17. {

  18. }

  19. if(i==j)

  20. {

  21. b[index]=a[i];

  22. index++;

  23. }

  24. }

  25. for(i=0;i<index;i++)

  26. {

  27. printf("%d\n",b[i]);

  28. }

  29. }

huanmiewh
2013-10-28 · TA获得超过277个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:98.4万
展开全部
这个就是一个去重的题目,目的就是让你把现有数组的中重复的值去掉之后,存到一个新的数组里而已。

排序之后,直接一个for循环就能搞定的。
更多追问追答
追问
题目中的“已知数组”需要先输入吗?
追答
是的,因为这个是作为已知条件给出的。

所以,这道题目就是给你一串数字,让你把这串数字去重。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式