题目描述 要计算一个学生的 GPA,先将每门学科的等第换算成为一个绩点,规则为: 等第 A 为 4 4 分; 等第 B 为 3 3 分; 等第 C 为 2 2 分; 等第 D 为 1 1 分; 如果有 + 号后缀,则加 0.3 0.3 分。例如 B+ 为 3.3 3.3 分; 如果有 - 号后缀,则减 0.3 0.3 分。例如 C- 为 1.7 1.7 分。 接下来,再计算这些分数的平均数,四舍五入保留两位小数即可获得 GPA。 给定一个字符序列表示小爱每门课程的等第,请计算她的GPA。 输入格式 一个字符序列:表示小爱各门课程的等第,一门课程的等第只可能是 A、B、C、D 中的一个,保证 + 号或 - 号只会出现在字母的后面。 输出格式 一个两位小数:表示输入等第对应的 GPA。 数据范围 1≤n≤1000。
时间: 2024-04-17 16:25:07 浏览: 38
这是一个计算学生 GPA 的问题。每个等第对应一个绩点,然后计算所有课程的平均绩点,最后四舍五入保留两位小数即可获得 GPA。
您可以使用以下 Python 代码来解决这个问题:
```python
def calculate_gpa(grades):
gpa_dict = {'A': 4.0, 'B': 3.0, 'C': 2.0, 'D': 1.0}
gpa = []
for grade in grades:
if grade[-1] == '+':
gpa.append(gpa_dict[grade[0]] + 0.3)
elif grade[-1] == '-':
gpa.append(gpa_dict[grade[0]] - 0.3)
else:
gpa.append(gpa_dict[grade[0]])
average_gpa = sum(gpa) / len(gpa)
return round(average_gpa, 2)
grades = input().split()
gpa = calculate_gpa(grades)
print(gpa)
```
您可以按照以下格式输入小爱每门课程的等第:
```
A B+ C- D
```
然后程序将计算并输出小爱的 GPA。
希望能帮到您!如果您还有其他问题,请随时提问。
相关问题
在学生课程数据库中完成: 编写一个存储过程,计算每个成绩的绩点。
好的,以下是一个可能的练习题,希望能够帮助你巩固Oracle存储过程的知识。
题目要求:
在一个学生课程数据库中,有一个名为SC(学生-课程)的表格,其中每条记录包含三个字段:学生ID、课程ID和成绩。现在需要你编写一个存储过程,用于计算每个成绩的绩点。
要求实现的存储过程应该满足以下条件:
1. 存储过程的名称为calculate_GPA。
2. 存储过程应该能够计算出SC表格中每个成绩的绩点,并将其存储在一个名为GPA的新表格中。
3. GPA表格应该包含四个字段:课程ID、成绩、绩点和排名。其中排名字段表示该成绩在所有成绩中的排名。
4. 存储过程应该返回成功计算出绩点的记录数目。
参考答案:
下面是一个可能的参考答案,仅供参考。请注意,实际的存储过程实现可能会因为具体的数据库结构和要求而有所不同。
```
CREATE OR REPLACE PROCEDURE calculate_GPA(p_calculated_count OUT NUMBER) AS
BEGIN
CREATE TABLE GPA AS
SELECT course_id, score,
CASE
WHEN score >= 90 THEN 4.0
WHEN score >= 85 THEN 3.7
WHEN score >= 82 THEN 3.3
WHEN score >= 78 THEN 3.0
WHEN score >= 75 THEN 2.7
WHEN score >= 72 THEN 2.3
WHEN score >= 68 THEN 2.0
WHEN score >= 64 THEN 1.5
WHEN score >= 60 THEN 1.0
ELSE 0.0
END AS point,
RANK() OVER (ORDER BY score DESC) AS rank
FROM SC;
p_calculated_count := SQL%ROWCOUNT;
END;
```
在这个存储过程中,我们首先使用CREATE TABLE语句创建一个名为GPA的新表格,其中包含课程ID、成绩、绩点和排名四个字段。然后,我们使用CASE语句计算出每个成绩的绩点,并将其存储在point字段中。最后,我们使用RANK() OVER函数计算出每个成绩在所有成绩中的排名,并将其存储在rank字段中。
你可以使用以下代码来调用这个存储过程,并查看返回结果:
```
DECLARE
calculated_count NUMBER;
BEGIN
calculate_GPA(calculated_count);
DBMS_OUTPUT.PUT_LINE('Calculated GPA for ' || calculated_count || ' records.');
END;
```
在这个例子中,我们调用存储过程calculate_GPA,并将返回的记录数存储在变量calculated_count中。最后,我们使用DBMS_OUTPUT.PUT_LINE函数将结果输出到控制台。
编写一个C语言程序,计算学生绩点
以下是一个简单的 C 语言程序,可以计算学生的绩点。该程序需要用户输入每门课程的学分和成绩,然后计算出总学分和绩点。
```c
#include <stdio.h>
int main() {
int n; // 总课程数
int credit, score; // 学分和成绩
double total_credit = 0, total_gpa = 0, gpa; // 总学分、总绩点、当前课程绩点
// 读入总课程数
printf("请输入总课程数:");
scanf("%d", &n);
// 循环读入每门课程的学分和成绩,并计算总学分和绩点
for (int i = 1; i <= n; i++) {
printf("请输入第 %d 门课程的学分和成绩(用空格分隔):", i);
scanf("%d %d", &credit, &score);
// 根据成绩计算绩点
if (score >= 90) {
gpa = 4.0;
} else if (score >= 85) {
gpa = 3.7;
} else if (score >= 82) {
gpa = 3.3;
} else if (score >= 78) {
gpa = 3.0;
} else if (score >= 75) {
gpa = 2.7;
} else if (score >= 72) {
gpa = 2.3;
} else if (score >= 68) {
gpa = 2.0;
} else if (score >= 64) {
gpa = 1.5;
} else if (score >= 60) {
gpa = 1.0;
} else {
gpa = 0;
}
// 累加总学分和绩点
total_credit += credit;
total_gpa += credit * gpa;
}
// 计算平均绩点
double avg_gpa = total_gpa / total_credit;
// 输出结果
printf("总学分:%.1f\n", total_credit);
printf("平均绩点:%.2f\n", avg_gpa);
return 0;
}
```
程序的运行结果如下:
```
请输入总课程数:3
请输入第 1 门课程的学分和成绩(用空格分隔):3 85
请输入第 2 门课程的学分和成绩(用空格分隔):2 92
请输入第 3 门课程的学分和成绩(用空格分隔):4 78
总学分:9.0
平均绩点:3.22
```
以上结果表示,该学生总共修了 9.0 学分课程,平均绩点为 3.22。