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
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
相关文章推荐
- 洛谷-谁拿了最多奖学金-NOIP2005提高组复赛
- NOIP2005提高组——谁拿了最多的奖学金(scholar)
- [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金
- NOIP2005提高组 && HLG 1219 谁拿了最多奖学金 (好经典的基础题 )
- luogu1051 谁拿了最多奖学金(NOIP2005提高组第1题)
- 【NOIP提高组2005】谁拿了最多奖学金
- [NOIP提高组2005]谁拿了最多奖学金
- NOIP2005 提高组第一题 谁拿了最多奖学金
- [NOIP 2005]谁拿了最多奖学金 模拟
- NOIP2005 day1 t1 谁拿了最多奖学金
- NOIP2005 谁拿了最多奖学金
- NOIP 2005 提高组 复赛 river 过河
- Noip2005谁拿了最多的奖学金题解
- NOIP 2007 普及组 复赛 scholar 奖学金
- 谁拿了最多奖学金(2005提高组第一题)
- 【NOIP2005】谁拿了最多奖学金
- [NOIp2005] 谁拿了最多奖学金
- Noip2005谁拿了最多的奖学金题解
- noip2005 谁拿了最多奖学金 (模拟)
- NOIP2005 谁拿了最多奖学金