2016-03-20 14 views
0

私はCを学ぼうとしている初心者です。選択ソートを使って配列をソートする必要があります。アルゴリズムが進むにつれて、各反復を表示する必要もあります。しかし、私は次のコードを動作させるように見えることはできません。並べ替え繰り返し部分の表示を実行すると、ランダムなガベージ番号がスローされます(画像を参照してください)。私はたくさんの検索をしましたが、このエラーの原因を釘付けにすることはできません。助けてください。 Program executionCの選択ソートで各繰り返しを印刷するにはどうすればよいですか?

#include<stdio.h> 
int main() 
{ 

int s,i,j,t,temp,a[20]; 
printf("Enter the number of elements in the array\n"); 
scanf("%d",&s); 

for(i=0;i<s;i++) 
    { 
     printf("Enter element %d\n",i+1); 
     scanf("%d",&a[i]); 
    } 

printf ("Selection sort.\narray before sorting:\n"); 
for (i=0;i<s;i++) 
    printf ("%d ",a[i]); 

printf ("\n"); 

for(i=0;i<s;i++) 
    { 
     printf ("After iteration %d\n", i+1); 
     for(j=i+1;j<s;j++) 
     { 
      if(a[i]>a[j]) 
       { 
       temp=a[i]; 
       a[i]=a[j]; 
       a[j]=temp; 
       } 
     } 
     for (t=0;t<s;t++); 
      printf ("%d ",a[t]); 
     printf ("\n"); 
    } 

printf("Array after sorting:\n"); 
for(i=0;i<s;i++) 
    printf ("%d ",a[i]); 

return 0; 
} 
+1

ソートループ内の 'for'ループの後にセミコロンがあります。タイプミスとしてクローズする投票。 – dasblinkenlight

+0

これからのような問題を避けるには、ループ内でループ変数を宣言します。 'for(int t = 0; t dasblinkenlight

+0

私を助けるために時間を割いていただきありがとうございます! – KnightSB

答えて

2

あなたの問題は、この行です: for (t=0;t<s;t++); ;とその行の終わりを持つことtが行われているいずれかの作業をせずに秒までカウントされることを意味し、そのループの後、単一の行が初期化されていない値で印刷されますa[s]

+0

'forステートメント'をセミコロンで終了します。だから恥ずかしい。どうもありがとうございました!!それは今働いた。私が言ったように、初心者。 – KnightSB

関連する問題