C言語の解説の演習の解答(第五回)


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


#include <stdio.h>

#define N 5

main()
{

  int d[N];
  int i;

  for (i=1;i<=N;i=i+1) {
    printf("データ=");
    scanf("%d",&d[i-1]);
  }

  for (i=1;i<=N;i=i+1) {
    printf("%d番目のデータ=%d¥n",N-i+1,d[N-i]);
  }
}

前回の解説でのプログラムとの変更点は、最後に配列の中身を順番に表示する部分で

     printf("%d番目のデータ=%d¥n",i,d[i-1]);
であったところを上の解答のように

     printf("%d番目のデータ=%d¥n",N-i+1,d[N-i]);
とした所だけです.
こうすれば、i = 1, 2, 3, ...., N-1, N となったときに N-i+1 = N, N-1, N-2, ..., 2, 1であり、 N-i = N-1, N-2, N-3, ...., 1, 0 となりますから、課題の内容の通りにプログラムが動くのが分かりますね.つまり、キーボードから、1, 3, 5, 10, 7 とこの順番で入力したとすると、

5番目のデータ=7
4番目のデータ=10
3番目のデータ=5
2番目のデータ=3
1番目のデータ=1

と表示されるわけです.