💡
C言語 配列変数の演習メモ
問題
回答
#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