题目大意:求学生的GPA,学分成以计分数,再除以分数的总和 思路:先用一个函数求出分数对应的学分,用for循环,每次输入,如果分数不是-1就用sum加上分数所对应的学分和计分的成积
再除以学分的总和, 如果sum等于0;则证明没有学分,就没有GPA,输出-1;还有不管有几门课缺考都要除以
学分的总和。 这题真是坑啊,题上明明写的80到89,实际上89.9也算3计分的!开始的时候写的<=89,然后错了一下午,应该是<90,唉,居然是
实型输入 2014,10,31
- #include<stdio.h>
- int f(double m){
- int k;
- if(m>=90&&m<=100) k=4;
- else if(m>=80&&m<90) k=3;
- else if(m>=70&&m<80) k=2;
- else if(m>=60&&m<70) k=1;
- else if(m>=0&&m<60) k=0;
- return k;
- }
- int main(){
- int n,i;
- double sum,x,y,z,j;
- while(scanf("%d",&n)!=EOF){
- sum=j=0.0;
- for(i=0;i<n;i++){
- scanf("%lf%lf",&x,&y);
- j+=x;//分数的总和
- if(y!=-1){
- z=f(y);
- sum+=x*z;
- }
- }
- if(sum==0) printf("-1\n");
- else
- printf("%.2lf\n",sum/j);
- }
- return 0;
- }