C语言:现有四个班级,每个班级有45名学生,本学期有5门课程考试,,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中。 要求利用随机函数编写一个函数给每个学生生成各科考试的成绩(0~100之间的整数),通过调用该函数生成全部学生的成绩 编写计算平均成绩的函数,计算每个同学的平均成绩并保存在成绩数组中
时间: 2024-01-02 21:05:00 浏览: 203
下面是实现题目要求的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_CLASSES 4 // 班级数量
#define NUM_STUDENTS 45 // 学生数量
#define NUM_COURSES 5 // 课程数量
// 学生信息结构体
struct Student {
char id[11]; // 学号
char name[20]; // 姓名
int scores[NUM_COURSES]; // 各科成绩
float avg_score; // 平均成绩
};
// 生成指定范围内的随机数
int rand_int(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 生成随机成绩
void generate_scores(struct Student *stu) {
for (int i = 0; i < NUM_COURSES; i++) {
stu->scores[i] = rand_int(0, 100);
}
}
// 计算平均成绩
void calculate_avg_score(struct Student *stu) {
int sum = 0;
for (int i = 0; i < NUM_COURSES; i++) {
sum += stu->scores[i];
}
stu->avg_score = (float)sum / NUM_COURSES;
}
int main() {
// 初始化随机数种子
srand(time(NULL));
// 定义四个班级的学生信息数组
struct Student class1[NUM_STUDENTS];
struct Student class2[NUM_STUDENTS];
struct Student class3[NUM_STUDENTS];
struct Student class4[NUM_STUDENTS];
// 生成各科成绩和计算平均成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
// 生成学号
sprintf(class1[i].id, "STU%04d", i + 1);
sprintf(class2[i].id, "STU%04d", i + 1);
sprintf(class3[i].id, "STU%04d", i + 1);
sprintf(class4[i].id, "STU%04d", i + 1);
// 生成姓名
sprintf(class1[i].name, "Student%d", i + 1);
sprintf(class2[i].name, "Student%d", i + 1);
sprintf(class3[i].name, "Student%d", i + 1);
sprintf(class4[i].name, "Student%d", i + 1);
// 生成各科成绩和计算平均成绩
generate_scores(&class1[i]);
calculate_avg_score(&class1[i]);
generate_scores(&class2[i]);
calculate_avg_score(&class2[i]);
generate_scores(&class3[i]);
calculate_avg_score(&class3[i]);
generate_scores(&class4[i]);
calculate_avg_score(&class4[i]);
}
// 输出第一个班级的全部学生信息
printf("Class 1:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
struct Student *stu = &class1[i];
printf("ID: %s, Name: %s, Scores: ", stu->id, stu->name);
for (int j = 0; j < NUM_COURSES; j++) {
printf("%d ", stu->scores[j]);
}
printf("Avg Score: %.1f\n", stu->avg_score);
}
// 计算所有学生的平均成绩
float total_avg_score = 0.0;
int num_students = NUM_CLASSES * NUM_STUDENTS;
for (int i = 0; i < NUM_STUDENTS; i++) {
total_avg_score += class1[i].avg_score + class2[i].avg_score + class3[i].avg_score + class4[i].avg_score;
}
total_avg_score /= num_students;
printf("Total Avg Score: %.1f\n", total_avg_score);
return 0;
}
```
在上面的代码中,我们首先定义了一个 `Student` 结构体来表示学生信息,包括学号、姓名、各科成绩和平均成绩。然后定义了 `rand_int()` 函数来生成指定范围内的随机数,以及 `generate_scores()` 函数来生成随机成绩,`calculate_avg_score()` 函数来计算平均成绩。最后在 `main` 函数中,我们定义了四个班级的学生信息数组,并使用 `generate_scores()` 函数和 `calculate_avg_score()` 函数生成各科成绩和计算平均成绩。最后输出第一个班级的全部学生信息,并计算所有学生的平均成绩。
阅读全文