修改这串代码#include<stdio.h> #define N 20 int main() { int a[N]={ 0 }, b[N]={ 0 }; int anum,bnum,c[N+N]; int *pi, *pj,*pk; scanf("%d",&anum); //输入数组a元素个数 for(pi=a;pi<a+anum;pi++) { scanf("%d",pi); } scanf("%d",&bnum); //输入数组b元素个数 for(pj=b;pj<b+bnum;pj++) { scanf("%d",pj); } /***** 在数组a和b都有数据时比较两个数组 *****/ /********** Begin *********/ int temp,i; pi=a; pj=b; if(anum<bnum){ temp=anum; } else{ temp=bnum; } int f1=0,f2=0; //判断哪一个小,以便于后续停止 for(i=0;i<=2*temp;i++){ if(*pi<*pj){ c[i]=*pi; pi++; f1++; } else if(*pi>*pj){ c[i]=*pj; pj++; f2++; } }//向c数组里面添加数据 /********** End **********/ /***** 如果数组a还有数据 *****/ /********** Begin *********/ if((anum-f1)!=0){ for(i=0;i<anum-f1;i++) c[2*temp+i+1]=a[f1+i]; } /********** End **********/ /***** 如果数组b还有数据 *****/ /********** Begin *********/ if((bnum-f2)!=0){ for(i=0;i<anum-f2;i++) c[2*temp+i+1]=b[f2+i]; } /********** End **********/ /***** 输出数组c *****/ /********** Begin *********/ for(i=0;i<anum+bnum;i++){ if(i<anum+bnum-1) printf("%d ",c[i]); else printf("%d",c[i]); } /********** End **********/ printf("\n"); return 0; }
时间: 2023-06-29 09:09:37 浏览: 64
修改后的代码如下:
```
#include<stdio.h>
#define N 20
int main() {
int a[N]={ 0 }, b[N]={ 0 };
int anum,bnum,c[N+N];
int *pi, *pj,*pk;
scanf("%d",&anum); //输入数组a元素个数
for(pi=a;pi<a+anum;pi++) {
scanf("%d",pi);
}
scanf("%d",&bnum); //输入数组b元素个数
for(pj=b;pj<b+bnum;pj++) {
scanf("%d",pj);
}
// 比较两个数组,将小的元素添加到 c 数组中
int i = 0, j = 0, k = 0;
while (i < anum && j < bnum) {
if (a[i] < b[j]) {
c[k++] = a[i++];
} else {
c[k++] = b[j++];
}
}
while (i < anum) { // 如果数组 a 还有剩余元素,添加到 c 数组中
c[k++] = a[i++];
}
while (j < bnum) { // 如果数组 b 还有剩余元素,添加到 c 数组中
c[k++] = b[j++];
}
// 输出数组 c
for(i=0;i<anum+bnum;i++) {
if(i<anum+bnum-1) {
printf("%d ",c[i]);
} else {
printf("%d",c[i]);
}
}
printf("\n");
return 0;
}
```
修改说明:
1. 原代码中比较两个数组的部分使用了两层 for 循环,实际上只需要使用一层 while 循环即可,可以使代码更简洁。
2. 在将小的元素添加到 c 数组中时,原代码使用了两个指针 pi 和 pj,但是指针的使用需要小心,容易出现指针越界等问题。在修改后的代码中,使用了两个变量 i 和 j 来记录数组 a 和 b 的当前位置,使用一个变量 k 来记录数组 c 的当前位置,避免了指针的使用。
3. 在输出数组 c 时,原代码使用了两个 if 语句来判断是否输出空格,实际上可以使用一个 if-else 语句来实现。
阅读全文