2016-10-23 6 views
0

Ich versuche, das Programm die Zahlen 1,2,3,4 in umgekehrter Reihenfolge ausgeben zu lassen. Allerdings bekomme ich immer seltsame Ergebnisse und bin mir nicht sicher warum. Das ist, was ich habe, so weit:Ausgabeelemente von einem Array in umgekehrter Reihenfolge

#include <stdio.h> 
#define NO_OF_ELEMENTS 4 

int main() 
{ 
    int numbers[NO_OF_ELEMENTS]; 
    int i, j; 

    printf("Type a number and hit enter:\n"); 

    /* Input each number */ 
    for(i = 0; i < NO_OF_ELEMENTS; i++) 
    { 
     scanf("%d", &numbers[i]); 
    } 

    /* Print each number in reverse order */ 
    for(j = NO_OF_ELEMENTS; j > 0; j--) 
    { 
     printf("%d\n", &numbers[j]); 
    } 

    return(0); 
} 

Die Ausgabe des Programms sieht wie folgt aus:

Program Running

Jede Hilfe bei der Erklärung, warum der Code nicht funktioniert, wie ich es erwarten, wird sehr geschätzt werden.

FIXED

/* Print each number in reverse order */ 
for(j = NO_OF_ELEMENTS; j > 0; j--) 
{ 
    printf("%d\n", numbers[j - 1]); 

} 

enter image description here

+5

Es ist nur 'Zahlen [j]' in 'printf'; nein '&'. Und dein Index ist um eins, also 'Zahlen [j - 1]'. – melpomene

+0

@melpomene Ich denke, es ist das 'scanf' in der for-Schleife. Eine Antwort wird in diesem Link bereitgestellt. Ist das falsch? Ihre Antwort ist korrekt. – Elyasin

+0

@Elyasin Die Frage, die Sie verlinkt haben, ist über 'scanf', der scheinbar die Eingabe überspringt. Dies ist hier nicht der Fall: OP konnte 4 Zahlen wie erwartet eingeben. – melpomene

Antwort

1

Für printf Sie nicht &, entfernen Sie es nicht brauchen, und es würde funktioniert.

Und die zweite für Sie müssen bei NO_OF_ELEMENTS - 1 beginnen wegen Array-Start bei 0 und endet bei 3 für 4 Artikel.

enter image description here

+0

Welchen Text-Editor verwenden Sie? – Konahrik16

+0

Es ist kein Texteditor, ist Konsole, ein Terminalemulator für KDE-Desktop-Umgebung. Als Code verwende ich Webstorm und Vim. –

Verwandte Themen