永发信息网

用C语言编写一个对给定的两个数组进行重新排列的程序

答案:3  悬赏:0  手机版
解决时间 2021-01-28 15:27
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5},b[]={3,5,7,9,10,11},c[10]={0},i=0,j=0,k=0;
clrscr();
while(i<5&&j<6)
{
if(a[i]>b[j]) {c[k]=b[j];k++;j++;}
if(a[i]==b[j]) break;
else {c[k]=a[i];k++;i++;}
}
while(j<6)
{c[k+1]=b[j];k++;j++;}

for(k=0;k<10;k++)
printf("%d ",c[k]);
}

这样写错在哪里了?
最佳答案
#include "conio.h" //要用clrscr();必要要有这个头文件

#include "stdio.h"
main()
{
int a[]={1,2,3,4,5},b[]={3,5,7,9,10,11},c[10]={0},i=0,j=0,k=0;
clrscr();
while(i<5&&j<6)
{
if(a[i]>b[j]) {c[k]=b[j];k++;j++;}
if(a[i]==b[j]) break; //这里应该是else if(a[i]==b[j]) {c[k]=b[j];k++;j++;i++} 不能break;
else {c[k]=a[i];k++;i++;}
}
while(j<6)
{c[k+1]=b[j];k++;j++;} //这里应该是{c[k]=b[j];k++;j++;} 因为k已经在之前自加过了

for(k=0;k<10;k++)
printf("%d ",c[k]);
}
全部回答
#include #include #define na 5 #define nb 5void sort(int a[], int nlen) { for(int i = 0; i < nlen - 1; i++) { int n = i; int p = a[i]; for(int j = i + 1; j < nlen; j++) { if(a[j] < p) { p = a[j]; n = j; } } int t = a[i]; a[i] = a[n]; a[n] = t; } }int* merge(int a[], int nlena, int b[], int nlenb) { int* c = (int*)malloc((nlena + nlenb)*sizeof(int)); int i = 0; int j = 0; int n =0; while (i < nlena && j < nlenb) { if (a[i] <= b[j]) { c[n++] = a[i++]; } else { c[n++] = b[j++]; } } if (i < nlena) { for (; i < nlena; i++) { c[n++] = a[i]; } } if (j < nlenb) { for (; j < nlenb; j++) { c[n++] = b[j]; } } return c; }void main() { int a[na] = {0}; int b[nb] = {0}; printf("input %d number for a[]: ", na); for (int i = 0; i < na; i++) { scanf("%d", &a[i]); } printf("input %d number for b[]: ", nb); for (i = 0; i < nb; i++) { scanf("%d", &b[i]); } sort(a, na); sort(b, nb); printf("a[] after sort: "); for (i = 0; i < na; i++) { printf("%d ", a[i]); } printf("\nb[] after sort: "); for (i = 0; i < nb; i++) { printf("%d ", b[i]); } int *c = merge(a, na, b, nb); printf("\na[] b[] after merge: "); for (i = 0; i < na + nb; i++) { printf("%d ", c[i]); } printf("\n"); }
while(i<5 && j<6) { if(a[i]>b[j]) {c[k]=b[j];k++;j++;} else if(a[i]==b[j]) {c[k]=b[j];k++;j++;i++;} else {c[k]=a[i];k++;i++;} } while(j<6) {c[k]=b[j];k++;j++;}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2010年上海世博会已圆满落幕,为更全面地了解
搁误的意思是什么啊?知道的请说下!
宜家的儿童家居环保吗?有气味吗?
罪恶都市对电脑的配置要求高 还是lol对dian&a
苹果手机插电脑后没反应是怎么回事
【欲速则不达是什么意思】欲速则不达.这句话
打靶.小明练习打靶,共打了50发子弹,命中的
娱乐圈十大贱人排行榜
最近玫瑰叶子斑点脱落怎么回事?
【人文初祖】被称为人文初祖的是[]A.黄帝B.炎
真不知道上大学有什么用,考上了,都被那些没
鬓丝的意思是什么啊?知道的请说下!
韩泰轮胎上为什么有彩线
从徐州到洪泽有多远
皇帝后宫为何称六宫?
推荐资讯
狂怒真人cs户外俱乐部怎么去啊,我要去那办事
家里小猫拉肚子要断水断粮,怎么办
我该怎么办 我不想死 但是我也不想活了
三星sm-g7200找不到蓝牙耳机
防盗的意思是什么啊?知道的请说下!
喜力啤酒罐装有哪些包装
金利祥珠宝地址在什么地方,我要处理点事
卓别林是不是男人?
硚口区武汉市青年鼓手协会我想知道这个在什么
卖风流的意思是什么啊?知道的请说下!
丰豪的意思是什么啊?知道的请说下!
华宁县国土资源局地址好找么,我有些事要过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?