STEP 1.2

<問題 >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;        

}