第11問

配列に格納された整数値から10の倍数を見つけて表示するプログラムを作りました。このプログラムは正しいものですが、少しだけ改善できる点があります。

どこが改善できるか分かりますか?
main.c
#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int values[10] = { 5, 3, 14, -6, 20, 372, 1000, 18 };

  for (int i=0; i<10; i++) {
    if (values[i] % 10 == 0) {
      printf("values[%d] is a multiple of %d.\n", i, 10);
    }
  }

  return EXIT_SUCCESS;
}
実行結果
values[4] is a multiple of 10.
values[6] is a multiple of 10.
values[8] is a multiple of 10.
values[9] is a multiple of 10.
最初のほうで、要素数が10の配列を初期化しているのが分かるかしら?
はい。5とか3とかバラバラの整数が10個……ん?8個しかないですよ?
この場合、残りは0を指定したのと同じ意味になるのよ。
なるほど。そうしたら、配列の最後の2つには0が入るんですね。
そういうこと。じゃあ、forループのところにある数字の10は何を指していると思う?
これも配列の要素数……ですよね。
そうね。if文の条件式にある10はどう?
ええと、こっちは10の倍数かどうかを判定するための10ですかね。
うん。ちゃんと解読できたようね。
はい、なんとか……。でも少しややこしかったです。
もう少し意味が分かりやすい書き方がないか考えてみましょう。