Treasure the new start, freshmen!
题目描述:
新的学期即将到来,也正逢杭州电子科技大学50周年校庆。无论你的专业是什么,我唯一要告诉那么的是:“珍惜大学的生活,利用好时间。” 很多人认为大学的生活回是丰富多采。但事实是,大学生活也同样忙碌。如果你要掌握书上的知识,你的空闲时间必须花在自学和实践上,尤其是实践。我认为,作为一位大学生,所有人都必须端正自己的学习态度。
“没有不劳而获的事情”,杭电也设立了奖学金,你能得到吗?它主要依据是学生获得的GPA(测评平均分)。现在,我将告诉你它的规则,你的任务就是编程计算GPA。
假如有K门课程,第i门课的学分为Ci,你的成绩为为Si,则GPA为:
GPA = (C1 * S1 + C2 * S2 +……+Ci * Si……) / (C1 + C2 + ……+ Ci……) (1 <= i <= K, Ci != 0)
如果有一门课程成绩在0到60之间,则GPA将不存在。Input
The first number N indicate that there are N test cases(N <= 50). In each case, there is a number K (the total courses number), then K lines followed, each line would obey the format: Course-Name (Length <= 30) , Credits(<= 10), Score(<= 100).
Notice: There is no blank in the Course Name. All the Inputs are legalOutput
Output the GPA of each case as discribed above, if the GPA is not existed, ouput:"Sorry!", else just output the GPA value which is rounded to the 2 digits after the decimal point. There is a blank line between two test cases.
Sample Input
2 3 Algorithm 3 97 DataStruct 3 90 softwareProject 4 85 2 Database 4 59 English 4 81Sample Output
90.10 Sorry!
通过答案:
#include<stdio.h>
int main()
{
int n,k,i,flag;
double c,s,gpa,sum,c_sum;
char str[50]; //课程名
while(scanf("%d",&n)!=EOF)
{
while(n--){
flag=0;
sum=0;
c_sum=0;
scanf("%d",&k); //课程数
for(i=0;i<k;i++){
scanf("%s%lf%lf",str,&c,&s);
if(s>=0&&s<60){
flag=1;
}else{
sum+=c*s; //sum=C1 * S1 + C2 * S2 +……+Ci * Si……
c_sum+=c; //c_sum= C1 + C2 + ……+ Ci……
}
}
gpa=sum/c_sum; //GPA = (C1 * S1 + C2 * S2 +……+Ci * Si……) / (C1 + C2 + ……+ Ci……)
if(flag==1){
printf("Sorry!\n");
}else{
printf("%.2lf\n",gpa);
}
if(n!=0) //每种情况中间用空行隔开
printf("\n");
}
}
return 0;
}