C语言学校课程考核成绩与绩点关系如下: 一门课程的成绩在 60 分 (不含 60 分)以下不能获得学分,也不能进行学分绩点的计算, 60 ~ 100 分之间按下试计算: 注:在本题中成绩在 60 分以下的课程成绩绩点为 0. 每学年结束应计算学生的平均学分绩点,计算方法如下: 其中: 输入格式 第一行一个整数 t(1 <= t <= 100) 代表测试用例组数。每组测试用例包含三行: 每组测试样例第一行一个整数 n (1 <= n <= 30)表示该学年课程总数, 第二行有 n 个小数 a1, a2, ... , an (0.1 <= ai <= 10.0)表示第 i 门课程的学分数。 第三行有 n 个整数 b1, b2, ... , bn (0 <= bi <= 100)表示第 i 门课程的成绩。 输出格式 对于每组测试用例,输出 n 行每行一个整数代表其该学年平均学分绩点。(结果保留两位小数)
时间: 2024-02-07 15:03:33 浏览: 114
C语言课程设计作业-学生成绩的管理系统代码(95分以上)
下面是一个可以解决此问题的 C 语言程序:
```c
#include <stdio.h>
float get_gpa(int score) {
if (score < 60) {
return 0.0;
} else if (score <= 63) {
return 1.0;
} else if (score <= 67) {
return 1.5;
} else if (score <= 71) {
return 2.0;
} else if (score <= 74) {
return 2.3;
} else if (score <= 77) {
return 2.7;
} else if (score <= 81) {
return 3.0;
} else if (score <= 84) {
return 3.3;
} else if (score <= 89) {
return 3.7;
} else {
return 4.0;
}
}
int main() {
int t; // 测试用例组数
scanf("%d", &t);
while (t--) {
int n; // 课程总数
scanf("%d", &n);
float credits[n]; // 学分
int scores[n]; // 成绩
// 输入每门课程的学分和成绩
for (int i = 0; i < n; i++) {
scanf("%f", &credits[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &scores[i]);
}
float total_credit = 0.0; // 总学分
float total_gpa = 0.0; // 总绩点
// 计算总学分和总绩点
for (int i = 0; i < n; i++) {
float gpa = get_gpa(scores[i]);
total_credit += credits[i];
total_gpa += gpa * credits[i];
}
// 计算平均学分绩点并输出
float avg_gpa = total_gpa / total_credit;
printf("%.2f\n", avg_gpa);
}
return 0;
}
```
注意,此程序中的 `get_gpa()` 函数根据成绩计算绩点,实际情况中可能会有所不同,需要根据学校的规定进行调整。另外,由于本题要输出多组结果,需要使用一个循环语句来进行多次输入和输出。
阅读全文