题目描述 学校课程考核成绩与绩点关系如下: 一门课程的成绩在 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-05 12:05:12 浏览: 21
以下是Python的代码实现:
```python
t = int(input())
for _ in range(t):
n = int(input())
credits = list(map(float, input().split()))
scores = list(map(int, input().split()))
gpa_sum = 0
credit_sum = 0
for i in range(n):
if scores[i] >= 60:
gpa = (scores[i] - 60) / 10 + 1
if gpa > 4.0:
gpa = 4.0
credit_point = gpa * credits[i]
gpa_sum += credit_point
credit_sum += credits[i]
gpa_avg = gpa_sum / credit_sum
print("{:.2f}".format(gpa_avg))
```
对于每个测试用例,先读入学年课程总数n,然后读入n个小数和n个整数,分别代表各门课程的学分和成绩。接下来按照上面的计算方法计算平均学分绩点gpa_avg,并输出结果,保留两位小数。
相关问题
学校课程考核成绩与绩点关系如下: 一门课程的成绩在 60 分 (不含 60 分)以下不能获得学分,也不能进行学分绩点的计算, 60 ~ 100 分之间按下试计算: 注:在本题中成绩在 60 分以下的课程成绩绩点为 0. 每学年结束应计算学生的平均学分绩点,计算方法如下: 其中:
对于成绩在 60 分及以上的课程,其绩点与成绩的对应关系如下表所示:
| 成绩 | 绩点 |
|------|------|
| 90分及以上 | 4.0 |
| 85 ~ 89分 | 3.7 |
| 82 ~ 84分 | 3.3 |
| 78 ~ 81分 | 3.0 |
| 75 ~ 77分 | 2.7 |
| 72 ~ 74分 | 2.3 |
| 68 ~ 71分 | 2.0 |
| 64 ~ 67分 | 1.5 |
| 60 ~ 63分 | 1.0 |
计算每门课程的学分绩点时,先根据成绩与绩点的对应关系计算出该课程的绩点,然后将该课程的学分乘以所得绩点,得到该课程的学分绩点。最后将所有课程的学分绩点累加起来,除以总学分数,即可得到学生的平均学分绩点。
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 行每行一个整数代表其该学年平均学分绩点。(结果保留两位小数)
下面是一个可以解决此问题的 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()` 函数根据成绩计算绩点,实际情况中可能会有所不同,需要根据学校的规定进行调整。另外,由于本题要输出多组结果,需要使用一个循环语句来进行多次输入和输出。