现有四个班级,每个班级有45名学生,本学期有5门课程考试,,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中。 要求利用随机函数编写一个函数给每个学生生成各科考试的成绩(0~100之间的整数),通过调用该函数生成全部学生的成绩 编写计算平均成绩的函数,计算每个同学的平均成绩并保存在成绩数组中
时间: 2024-01-03 20:02:58 浏览: 107
班级学生成绩管理系统课程设计样本
好的,以下是实现上述要求的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_CLASSES 4
#define NUM_STUDENTS 45
#define NUM_COURSES 5
// 定义学生的成绩记录
struct StudentRecord {
char id[11];
char name[20];
int scores[NUM_COURSES];
float averageScore;
};
// 随机生成指定范围内的整数
int randomInt(int min, int max) {
return rand() % (max - min + 1) + min;
}
// 随机生成指定范围内的浮点数
float randomFloat(float min, float max) {
float scale = rand() / (float) RAND_MAX; // 将随机数归一化到 [0, 1] 之间
return min + scale * (max - min);
}
// 生成每个学生的成绩
void generateScores(struct StudentRecord students[][NUM_STUDENTS]) {
srand(time(NULL)); // 初始化随机数种子
for (int i = 0; i < NUM_CLASSES; i++) {
for (int j = 0; j < NUM_STUDENTS; j++) {
for (int k = 0; k < NUM_COURSES; k++) {
students[i][j].scores[k] = randomInt(0, 100); // 生成 0~100 之间的整数
}
}
}
}
// 计算每个学生的平均成绩
void calculateAverageScores(struct StudentRecord students[][NUM_STUDENTS]) {
for (int i = 0; i < NUM_CLASSES; i++) {
for (int j = 0; j < NUM_STUDENTS; j++) {
int sum = 0;
for (int k = 0; k < NUM_COURSES; k++) {
sum += students[i][j].scores[k];
}
students[i][j].averageScore = sum / (float) NUM_COURSES; // 计算平均成绩
}
}
}
int main() {
// 创建学生成绩记录的数组
struct StudentRecord students[NUM_CLASSES][NUM_STUDENTS];
// 生成每个学生的成绩
generateScores(students);
// 计算每个学生的平均成绩
calculateAverageScores(students);
// 输出每个学生的平均成绩
for (int i = 0; i < NUM_CLASSES; i++) {
for (int j = 0; j < NUM_STUDENTS; j++) {
printf("Class %d, Student %d, Average Score: %.2f\n", i+1, j+1, students[i][j].averageScore);
}
}
return 0;
}
```
在上面的代码中,我们定义了一个 `StudentRecord` 的结构体来表示每个学生的成绩记录。我们使用了两个函数 `generateScores` 和 `calculateAverageScores` 来生成每个学生的成绩和计算每个学生的平均成绩。最后,我们输出了每个学生的平均成绩。
阅读全文