您的位置:首页 > 其它

NOIP2005 提高组 复赛 scholar 谁拿了最多奖学金

2017-01-06 19:21 357 查看
NOIP2005 提高组 复赛 scholar 谁拿了最多奖学金

1.读完题目,马上就决定用结构体了。

2.读取Y,N信息建议用字符串。

3.按部就班,很快将程序编好。

4.测试样例,有些小错误,静态检查,找到笔误,修改,样例通过,提交AC。

耗时:20分钟

难度:简单

附上AC代码:

//2005 scholar 谁拿了最多奖学金

#include <stdio.h>

struct student{

    char name[20+10];

    int qm_score;

    int bj_score;

    char gb[10];

    char xb[10];

    int lw;

    int jj;

}stu[100+10],stu_t;

int main(){

    int n;

    int i,j;

    int sum=0;

    scanf("%d",&n);

    for(i=0;i<n;i++){

        scanf("%s%d%d%s%s%d",&stu[i].name,&stu[i].qm_score,&stu[i].bj_score,&stu[i].gb,&stu[i].xb,&stu[i].lw);

        stu[i].jj=0;

    }

    for(i=0;i<n;i++){

        if(stu[i].qm_score>80&&stu[i].lw>=1){

            stu[i].jj+=8000;

            sum+=8000;

        }

        if(stu[i].qm_score>85&&stu[i].bj_score>80){

            stu[i].jj+=4000;

            sum+=4000;

        }

        if(stu[i].qm_score>90){

            stu[i].jj+=2000;

            sum+=2000;

        }

        if(stu[i].qm_score>85&&stu[i].xb[0]=='Y'){

            stu[i].jj+=1000;

            sum+=1000;

        }

        if(stu[i].bj_score>80&&stu[i].gb[0]=='Y'){

            stu[i].jj+=850;

            sum+=850;

        }

    }

    

    for(i=0;i<n;i++)

        for(j=i+1;j<n;j++)

            if(stu[i].jj<stu[j].jj){

                stu_t=stu[i];

                stu[i]=stu[j];

                stu[j]=stu_t;

            }

    printf("%s\n",stu[0].name);

    printf("%d\n",stu[0].jj);

    printf("%d\n",sum);

    return 0;

}

再次编写此题时,竟然提交只有30分,反复读代码,就是找不出问题,也明白肯定是读题有问题,上网查找其他途径的该题题目,还是查不出,无奈,只好搁置,第二天一早,再对照题目读代码,竟然一遍找出问题所在:

班级贡献奖,每人850元,班级评议成绩高于80分(>80)的学生干部均可获得;

代码却写成了:

班级贡献奖,每人850元,期末评议成绩高于80分(>80)的学生干部均可获得;

if(stu[i].bj>80&&stu[i].gb[0]=='Y')//好难找,必须心平气和,错误代码 if(stu[i].qm>80&&stu[i].gb[0]=='Y')

马上修改,提交AC。

2017-1-20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: