问题标题: 酷町堂:1285统分大作战(statistics)20分

0
0
已解决
赵毅恒
赵毅恒
资深守护
资深守护
for(int i=1;i<=n;++i)
    {
        cin>>s[i].Y>>s[i].S>>s[i].E>>s[i].J;
        if((s[i].Y+s[i].S+s[i].E+s[i].J)/4>90)
        cout<<"A\n";
        else if((s[i].Y+s[i].S+s[i].E)/3>80&&s[i].J>=90)
        cout<<"B\n";
        else if(s[i].Y==100||s[i].Y>=60&&s[i].S==100||s[i].S>=60&&s[i].E==100||s[i].E>=60&&s[i].J==100||s[i].J>=60)
        cout<<"C\n";
        else
        cout<<"D\n";
    }

求大佬找错


0
已采纳
方亦欧
方亦欧
新手光能
新手光能
if((double)(y+s+e+j)/4>90)
            cout<<"A\n";
        else if((double)(y+s+e)/3>80 && j>=90)
            cout<<"B\n";
        else if((y==100 || s==100 || e==100 || j==100) && y>=60 && s>=60 && e>=60 && j>=60)
            cout<<"C\n";
        else cout<<"D\n";

(y,s,e,j就是你程序里的是s[i].y,s[i].s,s[i].e,s[i].j)

你的程序错在把这四个变量当做整型来计算,正如栾峻岩所说的那个例子,如果你按照整型来计算是不对的,所以加个强制类型转换就对了。

1
栾峻岩
栾峻岩
初级天翼
初级天翼
if((s[i].Y+s[i].S+s[i].E+s[i].J)/4>90)
        cout<<"A\n";

错了,万一有一种情况:

语文:90 数学:90 英语:90 计算机:91 平均分:90.25 你的程序只能输出B,但正确结果是A

应该为:

if (a+b+c+d>360)
    cout<<"A\n";

100AC

else if((s[i].Y+s[i].S+s[i].E)/3>80&&s[i].J>=90)
       cout<<"B\n";

 

错了,和上面一样。

 

else if (a+b+c>240 && d>=90)
            cout<<"B\n";

 

0
0
我要回答