2014-04-04 66 views
0
#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结尾处有<字符。Array Sorting and Merging

enter image description here

+1

'的printf( “%S”,C);':'C '不是空终止。 – BLUEPIXY

+0

我不明白你的意思。 – Nishu

+0

得到你,谢谢:) – Nishu

回答

1

scanf("%s %s",&a,&b); - >scanf("%s %s", a, b);

char c[lena+lenb]; - >char c[lena+lenb+1];

printf("%s",c); - >c[k]='\0';printf("%s\n",c);

+0

我还有一个疑问,上面的程序在以下情况下工作正常: a = b = it 输出= iist 为什么在这种情况下不会出现问题? – Nishu

+1

@Nishu幸运似乎没有问题。 (也许,垃圾是0) – BLUEPIXY

+0

谢谢,你是对的:) – Nishu