2014-04-04 71 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