STEP 2.0 (探索/検索のイントロ)

<問題> 教科書 71ページ - 73ページの準備
(1) 探索キー(1〜9)を入力する
(2) 1桁の正の整数 (1〜9) の乱数を10個、配列sに格納し、表示する
(3) 配列sに、探索キーと等しい要素があるかどうかを調べる(探索する/検索する)

あれば(そこで終了し)どこにあるかを出力する。ない場合は、ないと出力する。
(以下では、教科書にあわせて、英語のメッセージを出力する)


<実行例>
探索キーを入力してください(1-9) :6
s[0] = 2
s[1] = 9
s[2] = 4
s[3] = 2
s[4] = 1
s[5] = 1
s[6] = 6
s[7] = 6
s[8] = 9
s[9] = 1
6 is found in s[6]  (← a[7]以降は調べていない)

探索キーを入力してください(1-9) :5
s[0] = 2
s[1] = 4
s[2] = 8
s[3] = 3
s[4] = 4
s[5] = 3
s[6] = 7
s[7] = 7
s[8] = 9
s[9] = 3
The element 5 is not in s (← 最悪。N個(最後まで)調べて、ない)

<ヒント> ループの中断 break よくわかるC p38    Cの絵本 p54



解答例

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10

int main(void) {
    int s[N];
    int i; /* 配列の添え字 */
    int x; /* キー x を探す */

    printf("探索キーを入力してください(1-9) :");
    scanf("%d", &x); /* &をお忘れなく */

    /* 乱数の種をセット */
    srand((unsigned int)time(NULL)); 

    /* 乱数 N 個の生成。配列に格納、同時に表示 */
    for (i = 0; i < N; i++) {
        s[i]= rand()%9 + 1;
        printf("s[%d] = %d \n", i, s[i]);
    }

    /* xを探索。1次元配列sに、xと等しい要素はどこに含まれているか */
    for (i = 0; i < N ; i++)
    /* 以下、埋めよう */



    /* メッセージの出力 */
 
         printf("%d is found in s[%d]\n", x,i); /* あった場合 */
    
         printf("The element %d is not in s\n", x); /* なかった場合 */

    return 0;
}