2016-10-23 13 views
0

番号1,2,3,4を逆順に出力するプログラムを取得しようとしています。 しかし、私は奇妙な結果を得続けており、理由は不明です。 これは私がこれまで持っているものです。配列の逆順の出力要素

#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); 
} 

次のようにプログラムの出力はなります

Program Running

私はそれが期待するようなコードが動作しない理由を説明するのに任意のヘルプ大変感謝します。

FIXEDあなたはそれを削除し、それが作品をだろう、&を必要としませんprintfについて

/* 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

これは 'printf'の' numbers [j] 'です。 '&'はありません。そして、あなたのインデックスは1つ分だけ離れているので、 'numbers [j - 1]'です。 – melpomene

+0

@melpomene私はそれがforループの 'scanf'だと思います。そのリンクに回答があります。それは間違っていますか?あなたの答えのコメントは正しいです。 – Elyasin

+0

@Elyasinあなたがリンクしている質問は、一見して入力をスキップする 'scanf'です。 OPは4つの数字を期待どおりに入力することができました。 – melpomene

答えて

1

NO_OF_ELEMENTS - 1で開始する必要があります。アレイの開始が0であり、終了が3の4つです。

enter image description here

+0

あなたはどのテキストエディタを使用していますか? – Konahrik16

+0

KDEデスクトップ環境用の端末エミュレータであるKonsoleは、テキストエディタではありません。私はWebstormとVimを使います。 –

関連する問題