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了。
温馨提示:答案为网友推荐,仅供参考
相似回答