【发布时间】:2014-05-17 09:00:54
【问题描述】:
#include<stdio.h>
#include<string.h>
int main(){
char a[10],b[10],temp;
int lena,lenb,i,j,k;
scanf("%s %s",&a,&b);
lena = strlen(a);
lenb = strlen(b);
char c[lena+lenb];
for(i=0;i<lena;i++){
for(j=0;j<lena;j++){
if(a[i]<a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for(i=0;i<lenb;i++){
for(j=0;j<lenb;j++){
if(b[i]<b[j]){
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
i=0;j=0;
for(k=0;k<(lena+lenb);k++){
if(i<lena && j<lenb){
if(a[i]<b[j]){
c[k]=a[i];i++;
}
else{
c[k]=b[j];j++;
}
}
else if(i==lena){
c[k]=b[j];
j++;
}
else if(j==lenb){
c[k]=a[i];
i++;
}
}
printf("%s",c);
}
使用这段代码,我得到两个数组 a 和 b,在对它们进行线性排序后,我通过合并 a 和 b 来创建一个数组 c。 现在我附上一张显示样本 i/p 和 o/p 的图像。我不明白为什么 o/p 结尾有
【问题讨论】:
-
printf("%s",c);:c不是空终止。 -
我不明白你,请你详细说明。
-
最后,我能够纠正错误并获得预期的 o/p,但你能告诉我,为什么会这样吗?
-
C 中的字符串操作是假设它以
'\0'完成的。'\0'未完成访问异常或显示垃圾。