<問題 >1桁の正の整数 (1〜9) の乱数を10個、配列に格納し、表示せよ。
その配列に、7があれば「7があったよ」と(繰り返し)出力する。7 が1 つもなかったときは「7がなかったよ」と出力する。
<実行結果>
(たとえば)
s[0] = 5
s[1] = 9
s[2] = 1
s[3] = 9
s[4] = 7
s[5] = 7
s[6] = 9
s[7] = 8
s[8] = 3
s[9] = 7
s[4]に7があったよ
s[5]に7があったよ
s[9]に7があったよ
(こちらも)
s[0] = 4
s[1] = 8
s[2] = 2
s[3] = 5
s[4] = 2
s[5] = 4
s[6] = 8
s[7] = 2
s[8] = 5
s[9] = 5
7はひとつもなかったよ
<ヒント> フラグと呼ばれる変数の使いかた。 よくわかるC p38
解答例 #include <stdio.h> #include <stdlib.h> #include <time.h> /* Nを10 */ #define N 10 int main (void) { int a[N]; int i; int flag = 0; /* 旗は下りている。「まだ、見つかっていない」。False (偽、成り立たない) */ /* 旗 7があったら1にする。0 false, 1 True */ srand((unsigned int)time(NULL)); /* 乱数 */ for (i = 0; i < N; i++) a[i]= rand()%9 + 1; /* 表示 */ for (i = 0; i < N; i++) printf("a[%d] = %d \n", i, a[i]); /* 7があるかどうかのチェック(STEP1.1) flag 変数に注意 */ for (i = 0 ; i < N ; i++) if (a[i] == 7) /* 旗が下がったままなら.. 条件文は? */ if (flag == 0) return 0; }