基础题。
AC码
#include<stdio.h>
int f(double n)
{
int c;
if(n >= 90) c = 4;
else if(n >= 80) c = 3;
else if(n >= 70) c = 2;
else if(n >= 60) c = 1;
else c=0;
return c;
}
int main()
{
int n, i;
double s, p, sum, t, gpa;
while(scanf("%d", &n) == 1)
{
sum=0,t=0,gpa=0;
for(i = 1; i <= n; i++)
{
scanf("%lf%lf", &s, &p);
if(p != -1)
{
sum += s * f(p);
t += s;
}
}
gpa = sum / t;
if(gpa>0.0)
printf("%.2lf\n", gpa);
else
printf("-1\n");
}
return 0;
}
前面一直错误的原因在于 30行 gpa>0 的判断
附WA码 第一次遇到输出负无穷 -1.#j
#include<stdio.h>
#include<math.h>
int f(int n)
{
int c;
if(n >= 90) c = 4;
else if(n >= 80) c = 3;
else if(n >= 70) c = 2;
else if(n >= 60) c = 1;
else c=0;
return c;
}
int main()
{
int n, s, p, i;
double sum, t, gpa;
while(scanf("%d", &n) == 1)
{
sum=0,t=0,gpa=0;
for(i = 1; i <= n; i++)
{
scanf("%d%d", &s, &p);
if(p != -1)
{
sum += s * f(p);
t += s;
}
}
gpa = sum / t;
if(fabs(gpa - 0)<1e-5)
printf("-1\n");
else
printf("%.2lf\n", gpa); //输出 -1.#j 表示计算出现负无穷(浮点值)
}
return 0;
}