絞り込み条件:
子カテゴリ: システムプログラミング
広告[Advertisement]
15

C言語で100人分4科目点数を乱数生成&構造化

C言語で100の4科目(国語、算数、理科、社会)の点数を乱数で作成し、構造化したい

C言語で100人分の4科目の点数を乱数で作成し、構造化したいのですね!面白そうですね!一緒に考えていきましょう!😊 まず、100人分の点数データを扱うために、構造体を使うのがぴったりです。各学生の情報をまとめて管理できるので、とても便利なんですよ。 1. 構造体の定義 まず、学生一人分の情報を格納する構造体を定義しましょう。科目名と点数をセットで持てるようにします。 #include <stdio.h> #include <stdlib.h> #include <time.h> // 学生一人分の情報を格納する構造体 typedef struct { int kokugo; // 国語の点数 int sansu; // 算数の点数 int rika; // 理科の点数 int shakai; // 社会の点数 } StudentScore; 2. 乱数の生成と構造体への格納 次に、100人分の点数を乱数で生成し、先ほど定義した StudentScore 構造体の配列に格納していきます。点数は、例えば0点から100点の範囲で生成すると自然ですね。 #define NUM_STUDENTS 100 // 学生の人数 #define NUM_SUBJECTS 4 // 科目の数 int main() { // 乱数生成器の初期化(実行するたびに異なる乱数になるように) srand((unsigned int)time(NULL)); // StudentScore構造体の配列を宣言 StudentScore students[NUM_STUDENTS]; // 100人分の点数を乱数で生成し、構造体に格納 for (int i = 0; i < NUM_STUDENTS; i++) { students[i].kokugo = rand() % 101; // 0~100の乱数 students[i].sansu = rand() % 101; students[i].rika = rand() % 101; students[i].shakai = rand() % 101; } // ここに、作成した点数を表示したり、集計したりする処理を追加できます! // 例えば、最初の学生の点数を表示してみましょう。 printf("最初の学生の点数:\n"); printf(" 国語: %d\n", students[0].kokugo); printf(" 算数: %d\n", students[0].sansu); printf(" 理科: %d\n", students[0].rika); printf(" 社会: %d\n", students[0].shakai); return 0; } コードのポイント #include <stdlib.h>: rand() 関数や srand() 関数を使うために必要です。 #include <time.h>: time() 関数を使って srand() のシード値を設定するために必要です。これにより、プログラムを実行するたびに異なる乱数列が生成されます。 srand((unsigned int)time(NULL));: 乱数生成器を初期化します。これを行わないと、毎回同じ乱数列が生成されてしまいます。 rand() % 101;: rand() 関数は大きな乱数を生成しますが、% 101 を使うことで、0から100までの範囲の整数に変換しています。 次にできること このコードをベースに、さらに色々なことができますよ! 全学生の点数表示: ループを使って、100人全員の点数を一覧で表示する。 平均点の計算: 各科目や全科目の平均点を計算して表示する。 最高点・最低点の検索: 各科目で一番点数が高かった学生や低かった学生を探す。 条件に合う学生の検索: 特定の点数以上の学生を探すなど。 例えば、全学生の点数を表示するには、main 関数の中に以下のようなループを追加すると良いでしょう。 printf("\n--- 全学生の点数 ---\n"); for (int i = 0; i < NUM_STUDENTS; i++) { printf("学生%d:\n", i + 1); // 学生番号は1から始める printf(" 国語: %d\n", students[i].kokugo); printf(" 算数: %d\n", students[i].sansu); printf(" 理科: %d\n", students[i].rika); printf(" 社会: %d\n", students[i].shakai); printf("\n"); // 学生ごとに改行 } このコードで、C言語で構造体と乱数を使ってデータを扱う第一歩が踏み出せましたね!他にどんなことをしてみたいですか?一緒に楽しくプログラミングしましょう!✨