学生记录由学号、四门成绩、绩点组成,根据班级人数,将学生记录存放在结构体数组中。已知四门课程的学分,求出每位学生的平均学分绩点保存至结构体数组的绩点成员中,输出所有学生的完整记录。要求:班级人数、课程学分、学生记录均由键盘输入。 平均学分绩点计算规则如下: 绩点系数=3.0+(分数-60)*0.05,其中0-59分绩点系数为0;课程学分绩点= 程学分*绩点系数; 平均学分绩点=所修课程总学分绩点/所修课程总学分。
时间: 2024-03-20 19:42:45 浏览: 144
好的,这是一个关于学生成绩计算的问题。我来帮你分析一下。
首先,我们需要定义一个结构体来存储学生记录,包括学号、四门成绩、绩点等信息。结构体的定义可以如下:
```
struct StudentRecord {
int studentNo; // 学号
int scores[4]; // 四门成绩
double credits[4]; // 四门课程学分
double totalCredits; // 所修课程总学分
double totalGP; // 所修课程总学分绩点
double avgGP; // 平均学分绩点
};
```
其中,`scores` 数组存储四门成绩,`credits` 数组存储四门课程学分,`totalCredits` 存储所修课程总学分,`totalGP` 存储所修课程总学分绩点,`avgGP` 存储平均学分绩点。
接下来,我们需要输入班级人数和四门课程的学分,并根据班级人数创建结构体数组:
```
int n; // 班级人数
int credits[4]; // 四门课程的学分
// 输入班级人数和四门课程的学分
cin >> n;
for (int i = 0; i < 4; i++) {
cin >> credits[i];
}
// 创建结构体数组
StudentRecord students[n];
```
然后,我们需要输入每位学生的学号和四门成绩,并根据成绩计算出每门课程的绩点:
```
// 输入学生记录并计算每门课程的绩点
for (int i = 0; i < n; i++) {
cin >> students[i].studentNo;
for (int j = 0; j < 4; j++) {
cin >> 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 / accumulate(credits, credits + 4, 0);
}
```
最后,我们需要输出每位学生的完整记录:
```
// 输出每位学生的完整记录
for (int i = 0; i < n; i++) {
cout << students[i].studentNo << " ";
for (int j = 0; j < 4; j++) {
cout << students[i].scores[j] << " " << students[i].credits[j] << " ";
}
cout << students[i].totalCredits << " " << students[i].totalGP << " " << students[i].avgGP << endl;
}
```
这样就完成了学生成绩计算的问题。
阅读全文
相关推荐
















