"No pain, No Gain", HDU also has scholarship, who can win it? That's mainly rely on the GPA(grade-point average) of the student had got. Now, I gonna tell you the rule, and your task is to program to caculate the GPA.
If there are K(K > 0) courses, the i-th course has the credit Ci, your score Si, then the result GPA is
GPA = (C1 * S1 + C2 * S2 +……+Ci * Si……) / (C1 + C2 + ……+ Ci……) (1 <= i <= K, Ci != 0)
If there is a 0 <= Si < 60, The GPA is always not existed.
InputThe 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 legalOutputOutput 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 81
Sample Output
90.10
Sorry!
#include<stdio.h>
struct tang{
char course[100];
double x,y;
}num[1000];
int main()
{
int n,m,i,flag;
double sum,t,ans;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
flag=1,sum=0,t=0;
for(i=0;i<m;i++)
{
scanf("%s%lf%lf",num[i].course,&num[i].x,&num[i].y);
if(num[i].y>=0&&num[i].y<60)
{
flag=0;
}
t+=num[i].x;
sum+=num[i].x*num[i].y;
}
ans=sum/t;
if(flag==1)
{
printf("%.2lf\n",ans);
}
else
{
printf("Sorry!\n");
}
if(n>0) printf("\n");
}
return 0;
}
题解:注意结构体的运用,再就没啥了。