2016-03-20 5 views
0

Ich bin ein Neuling versucht C zu lernen, und ich muss ein Array mit Auswahl sortieren sortieren. Ich muss auch jede Iteration zeigen, während der Algorithmus fortschreitet. Aber ich kann den folgenden Code nicht funktionieren lassen. Es wirft zufällige Müllnummern auf, wenn die Anzeige des Sortierungsiterationsteils ausgeführt wird (siehe Bild). Ich habe viel gesucht und kann immer noch nicht die Ursache für diesen Fehler finden. Bitte helfen Sie. Program executionWie drucke ich jede Iteration in Auswahlsortierung in C?

#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

Sie haben ein Semikolon nach der 'for'-Schleife in der Sortierschleife. Wählen, um als Tippfehler zu schließen. – dasblinkenlight

+0

Um solche Probleme in der Zukunft zu vermeiden, deklarieren Sie Schleifenvariablen innerhalb der Schleife: 'for (int t = 0; t dasblinkenlight

+0

Danke, dass du dir die Zeit genommen hast, mir zu helfen! – KnightSB

Antwort

2

Ihr Problem ist, diese Zeile: for (t=0;t<s;t++); Nachdem diese Linie mit ; Ende bedeutet, dass t ohne Arbeit s zählen wird getan und nach dieser Schleife eine einzelne Zeile wird mit dem nicht initialisierten Wert gedruckt werden von a[s].

+0

Beenden einer 'for-Anweisung' mit einem Semikolon. So peinlich. Vielen Dank!! Es hat jetzt funktioniert. Wie gesagt, Neuling. – KnightSB