题目描述
平均学分绩点(Grade Point Average,即GPA)是以学分与绩点作为衡量学生学习的量与质的计算单位,以取得一定的学分和平均学分绩点作为毕业和获得学位的标准,实施多样的教育规格和较灵活的教学管理制度。
大学里每一门课程都有一定的学分。只有通过这门课的考试,才能获得相应的学分。课程绩点的计算方法通常是:(百分制成绩-50)/10 取整。成绩100,对应绩点为5,成绩9099对应绩点为4,…,成绩6069对应绩点为1,成绩小于60,对应绩点为0。
平均学分绩点的计算方法是:是将学生修过的每一门课程的绩点乘以该门课程的学分,累加后再除以总学分。 平均学分绩点可以作为学生学习能力与质量的综合评价指标之一。请编程计算一个学生的平均学分绩点。
输入
输入n表示有n门课程,然后输入n门课程的学分和成绩,学分和成绩都是整数。
输出
输出平均学分绩点,保留一位小数。
样例输入 Copy
3
2 95
3 85
5 75
样例输出 Copy
2.7
#include<stdio.h>
int Ji(int score);
int main()
{
int n, fen, score, j,sumfen = 0, sumji = 0;
scanf("%d", &n);
while(scanf("%d%d", &fen, &score)!=EOF)/*用了EOF,不确定循环次数的
循环一般要用while循环加EOF,但此题是确定次数的循环,所以用for循环的话
更好一点,我之所以用while加EOF只是想验证一下,在确定循环次数的情况下用
while循环加EOF提交在OJ上是否正确,结果提交时显示是正确的*/
{
j = Ji(score);
sumfen += fen;
sumji += fen*j;
}
printf("%.1f", 1.0*sumji/sumfen);
return 0;
}
int Ji(int score)
{
int j;
if(score<60)//这个是关键条件
return 0;
else
j = (score-50)/10;
return j;
}
#include<stdio.h>
int Ji(int score);
int main()
{
int n, i, fen, score, j, sumfen = 0, sumji = 0;
scanf("%d", &n);
for(i = 1; i<=n; i++)//也可以用while(n--)来控制此数
{
scanf("%d%d", &fen, &score);
j = Ji(score);
sumfen += fen;
sumji += fen*j;
}
printf("%.1f\n", 1.0*sumji/sumfen);
return 0;
}
int Ji(int score)
{
int j;
if(score<60)
return 0;
else
j = (score-50)/10;
return j;
}