九度1002

关于这一题,我一看很简单,可是提交了三次才通过,总结一下教训吧,希望师弟师妹不要再犯这种错误。

首先就是没看清题目,理解错题目,这个还情有可原,大家以后看清楚题目吧,还有就是关于求平均数的时候犯的错误。

本来我以为double grade=(g1+g2)/2;就可以了,老是不能通过,后来用了好几组测试数据,才发现不对。

因为如果g1=13,g2=14,的出来的结果是13.0;正确结果应该是13.5,所以应该这么写:double grade=(g2+g1)/2,0;

上代码:#include
#include
int main(){
    int p,t,g1,g2,g3,gf;
    float grade;
    while(scanf("%d%d%d%d%d%d",&p,&t,&g1,&g2,&g3,&gf)!=EOF)
    {
        if(abs(g1-g2)<=t){
              grade=(g1+g2)/2.0;                  
        }else if(abs(g2-g3)<=t&&abs(g1-g3)<=t){
             int max=g1;
             if(g2>max)
                  max=g2;
             if(g3>max)
                 max=g3;
             grade=(float)max;  
        }else if(abs(g2-g3)>t&&abs(g1-g3)>t){
               grade=(float)gf;
        }else{
             if(abs(g1-g3)>abs(g2-g3)){
                    grade=(g2+g3)/2.0;
             }else{
                    grade=(g1+g3)/2.0;
                   } 
        }
        printf("%.1f\n",grade);
    }
}

你可能感兴趣的:(九度1002)