c语言写,学生记录由学号、四门成绩、绩点组成,根据班级人数,将学生记录存放在结构体数组中。已知四门课程的学分,求出每位学生的平均学分绩点保存至结构体数组的绩点成员中,输出所有学生的完整记录。要求:班级人数、课程学分、学生记录均由键盘输入。 平均学分绩点计算规则如下: 绩点系数=3.0+(分数-60)0.05,其中0-59分绩点系数为0;课程学分绩点= 程学分绩点系数; 平均学分绩点=所修课程总学分绩点/所修课程总学分。
时间: 2024-03-20 14:42:48 浏览: 83
好的,以下是使用C语言实现的代码:
```c
#include <stdio.h>
// 学生记录结构体
struct StudentRecord {
int studentNo; // 学号
int scores[4]; // 四门成绩
double credits[4]; // 四门课程学分
double totalCredits; // 所修课程总学分
double totalGP; // 所修课程总学分绩点
double avgGP; // 平均学分绩点
};
int main() {
int n; // 班级人数
int credits[4]; // 四门课程的学分
// 输入班级人数和四门课程的学分
printf("请输入班级人数和四门课程的学分:\n");
scanf("%d", &n);
for (int i = 0; i < 4; i++) {
scanf("%d", &credits[i]);
}
// 创建结构体数组
struct StudentRecord students[n];
// 输入学生记录并计算每门课程的绩点
for (int i = 0; i < n; i++) {
printf("请输入第%d位学生的学号和四门成绩:\n", i + 1);
scanf("%d", &students[i].studentNo);
for (int j = 0; j < 4; j++) {
scanf("%d", &students[i].scores[j]);
double gp = students[i].scores[j] < 60 ? 0 : 3.0 + (students[i].scores[j] - 60) * 0.05;
students[i].credits[j] = credits[j] * gp;
}
}
// 计算每位学生的总学分和总学分绩点
for (int i = 0; i < n; i++) {
students[i].totalCredits = 0;
students[i].totalGP = 0;
for (int j = 0; j < 4; j++) {
students[i].totalCredits += students[i].credits[j];
students[i].totalGP += students[i].scores[j] < 60 ? 0 : 3.0 + (students[i].scores[j] - 60) * 0.05;
}
students[i].avgGP = students[i].totalCredits / (credits[0] + credits[1] + credits[2] + credits[3]);
}
// 输出每位学生的完整记录
printf("所有学生的完整记录如下:\n");
for (int i = 0; i < n; i++) {
printf("学号:%d,四门成绩和课程学分:", students[i].studentNo);
for (int j = 0; j < 4; j++) {
printf("%d %lf ", students[i].scores[j], students[i].credits[j]);
}
printf("所修课程总学分:%lf,所修课程总学分绩点:%lf,平均学分绩点:%lf\n", students[i].totalCredits, students[i].totalGP, students[i].avgGP);
}
return 0;
}
```
在这个程序中,我们首先输入班级人数和四门课程的学分,然后根据班级人数创建结构体数组。接着,我们输入每位学生的学号和四门成绩,并计算出每门课程的绩点。然后,我们根据成绩和学分计算出每位学生的总学分和总学分绩点,并计算平均学分绩点。最后,我们输出每位学生的完整记录,包括学号、四门成绩、课程学分、所修课程总学分、所修课程总学分绩点和平均学分绩点。
注意:在计算平均学分绩点时,我们需要将所有学生所修的课程总学分相加,而不是将每门课程的学分相加。
阅读全文