💡

C言語 配列変数の演習メモ

2025/03/07に公開

問題

回答

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main()
    {
        int data[10];
    
        // 乱数の初期化
        srand(time(NULL));
    
        // 最初の要素をセット
        data[0] = rand() % 10 + 1;
        int max = data[0], min = data[0];
    
        printf("%d ", data[0]); // 最初の要素を出力
    
        // 残りの要素を生成しつつ、最大・最小を判定
        for (int i = 1; i < 10; i++)
        {
            data[i] = rand() % 10 + 1;
            printf("%d ", data[i]);
    
            if (data[i] > max)
            {
                max = data[i];
            }
            if (data[i] < min)
            {
                min = data[i];
            }
        }
            printf("\n最大値:%d\n", max);
        printf("最小値:%d\n", min);
    
        return 0;
    }

学んだこと
・srand(); を使わないと、プログラムを実行するたびに異なる乱数列を生成できない。
(rand()のみの記載だと疑似乱数は生成するが、毎回同じ乱数が出てくるようになる)
・time(NULL) を使うと、現在時刻をシードにできるため、実行のたびに異なるシードが設定される。
・「// 最初の要素をセット」の部分で変数を適切に初期化しないと配列にゴミ値が入り、望まない出力結果となる。

Discussion