C语言中将两个有序数组合并成一个有序数组 这个程序哪个地方错了

#include<stdio.h>void main(){ int a[2],b[2],c[4],m,i,j,k; printf("输入a数组:\n"); for(m=0;m<2;m++) { scanf("%d",&a[m]); } printf("输入b数组:\n"); for(m=0;m<2;m++) { scanf("%d",&b[m]); } i=0;j=0;k=0; while(i<2&&j<2) { if(a[i]<b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } k++; } printf("c数组是:\n"); for(m=0;m<4;m++) { printf("%d ",&c[m]); } printf("\n");}

首先一点
printf("%d ",&c[m]);
这个语法错了。 应该是printf("%d ",c[m]);
否则输出的是地址。

其次是算法。 当i和j 也就是a和b有一个到结尾 那么 就会引起循环退出
这时 另一个剩余的元素就没有处理了。

比如 你输入 a=1 2 b=3 4
那么c[0] = a[0]
c[1] = a[1]
之后,i=2 退出循环
b的两个元素就没加入c了。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网