2.2日测试总结
T1 P5740 【深基7.例9】最厉害的学生
无错误,本体使用结构体排序。
AC代码:
| #include<bits/stdc++.h> |
| using namespace std; |
| struct stu{ |
| string name; |
| int yw; |
| int sx; |
| int yy; |
| int zf; |
| int id; |
| }; |
| stu a[1005]; |
| bool cmp(stu x,stu y){ |
| if(x.zf==y.zf){ |
| if(x.id>y.id){ |
| return 0; |
| }else{ |
| return 1; |
| } |
| }else{ |
| if(x.zf>y.zf){ |
| return 1; |
| }else{ |
| return 0; |
| } |
| } |
| } |
| int main(){ |
| int n; |
| cin>>n; |
| for(int i=1;i<=n;i++){ |
| cin>>a[i].name>>a[i].yw>>a[i].sx>>a[i].yy; |
| a[i].zf=a[i].yw+a[i].sx+a[i].yy; |
| a[i].id=i; |
| } |
| sort(a+1,a+n+1,cmp); |
| cout<<a[1].name<<" "<<a[1].yw<<" "<<a[1].sx<<" "<<a[1].yy; |
| return 0; |
| } |
T2 P5742 【深基7.例11】评等级
无错误,使用结构体,用for循环判断第i个是不是Excellent。
AC代码:
| #include<bits/stdc++.h> |
| using namespace std; |
| struct stu{ |
| int id; |
| int xy; |
| int sz; |
| int zh; |
| int zf; |
| }; |
| stu a[1005]; |
| int main(){ |
| int n; |
| cin>>n; |
| for(int i=1;i<=n;i++){ |
| cin>>a[i].id>>a[i].xy>>a[i].sz; |
| a[i].zh=a[i].xy*0.7+a[i].sz*0.3; |
| a[i].zf=a[i].xy+a[i].sz; |
| } |
| for(int i=1;i<=n;i++){ |
| if(a[i].zf>140 and a[i].zh>=80){ |
| cout<<"Excellent"<<endl; |
| }else{ |
| cout<<"Not excellent "<<endl; |
| } |
| } |
| return 0; |
| } |
T3 P5738 【深基7.例4】歌唱比赛
错误代码:
| #include<bits/stdc++.h> |
| using namespace std; |
| const int maxn = 1e3+7; |
| double a[maxn][maxn]; |
| double s[maxn]; |
| double b[maxn]; |
| int main(){ |
| int n,m; |
| int j; |
| int maxx = 0; |
| int minn = 11; |
| cin>>n>>m; |
| for(int i=1;i<=n;i++){ |
| for(j=1;j<=m;j++){ |
| cin>>a[i][j]; |
| |
| if(a[i][j]>maxx){ |
| maxx=a[i][j]; |
| } |
| if(a[i][j]<minn){ |
| minn=a[i][j]; |
| } |
| s[i]=s[i]+a[i][j]; |
| |
| |
| } |
| for(int o=1;o<=j;o++){ |
| if(a[i][o]==maxx){ |
| a[i][o]=0; |
| } |
| if(a[i][o]==minn){ |
| a[i][o]=0; |
| } |
| } |
| |
| b[i]=s[i]/m; |
| } |
| cout<<fixed<<setprecision(2)<<b[1]; |
| return 0; |
| } |
错误位置
1.
第十行和第十一行的:
| int maxx = 0; |
| int minn = 11; |
应该改到第一个for循环里面:
改正后的代码:
| for(int i=1;i<=n;i++){ |
| int maxx = 0; |
| int minn = 11; |
| for(j=1;j<=m;j++){ |
| cin>>a[i][j]; |
| if(a[i][j]>maxx){ |
| maxx=a[i][j]; |
| } |
| if(a[i][j]<minn){ |
| minn=a[i][j]; |
| } |
| ...... |
| } |
2.
第27行到第34行的:
| for(int o=1;o<=j;o++){ |
| if(a[i][o]==maxx){ |
| a[i][o]=0; |
| } |
| if(a[i][o]==minn){ |
| a[i][o]=0; |
| } |
| } |
应该为:
因为这里不是要等于0,而是要把max和min从s[i]中减去。
3.
第36行的:
应该为:
因为是去掉了最高分和最低分,所以要m-2.
AC代码:
| #include<bits/stdc++.h> |
| using namespace std; |
| const int maxn = 1e3+7; |
| double a[maxn][maxn]; |
| double s[maxn]; |
| double b[maxn]; |
| int main(){ |
| int n,m; |
| int j; |
| cin>>n>>m; |
| for(int i=1;i<=n;i++){ |
| int maxx = 0; |
| int minn = 11; |
| for(j=1;j<=m;j++){ |
| cin>>a[i][j]; |
| |
| if(a[i][j]>maxx){ |
| maxx=a[i][j]; |
| } |
| if(a[i][j]<minn){ |
| minn=a[i][j]; |
| } |
| s[i]=s[i]+a[i][j]; |
| |
| |
| } |
| s[i]-=maxx; |
| s[i]-=minn; |
| |
| b[i]=s[i]/(m-2); |
| } |
| sort(b+1,b+1+n,greater<double>()); |
| cout<<fixed<<setprecision(2)<<b[1]; |
| return 0; |
| } |
T4 P1093 [NOIP2007 普及组] 奖学金
错误代码:
| #include<bits/stdc++.h> |
| using namespace std; |
| struct stu{ |
| int id; |
| int yw; |
| int sx; |
| int yy; |
| int zf; |
| }; |
| const int maxn = 305; |
| stu a[maxn]; |
| bool cmp(stu x,stu y){ |
| if(x.zf==y.zf){ |
| if(x.yw==y.yw){ |
| if(x.id>y.id){ |
| return 0; |
| }else{ |
| return 1; |
| } |
| } |
| }else{ |
| if(x.zf>y.zf){ |
| return 1; |
| }else{ |
| return 0; |
| } |
| } |
| } |
| int main(){ |
| int n; |
| cin>>n; |
| |
| for(int i=1;i<=n;i++){ |
| cin>>a[i].yw>>a[i].sx>>a[i].yy; |
| a[i].id=i; |
| a[i].zf=a[i].yw+a[i].sx+a[i].yy; |
| } |
| sort(a+1,a+n+1,cmp); |
| for(int i=1;i<=5;i++){ |
| cout<<a[i].id<<" "<<a[i].zf<<endl; |
| } |
| return 0; |
| } |
错因:
cmp函数判断时,没有注意到题目中“如果两个同学总分相同,再按语文成绩从高到低排序”这句话。错误位置:
| if(x.zf==y.zf){ |
| if(x.yw==y.yw){ |
| if(x.id>y.id){ |
| return 0; |
| }else{ |
| return 1; |
| } |
| } |
| } |
正确代码为:
| if(x.zf==y.zf){ |
| if(x.yw==y.yw){ |
| if(x.id>y.id){ |
| return 0; |
| }else{ |
| return 1; |
| } |
| }else{ |
| if(x.yw>y.yw){ |
| return 1; |
| }else{ |
| return 0; |
| } |
| } |
| } |
更正后AC代码为:
| #include<bits/stdc++.h> |
| using namespace std; |
| struct stu{ |
| int id; |
| int yw; |
| int sx; |
| int yy; |
| int zf; |
| }; |
| const int maxn = 305; |
| stu a[maxn]; |
| bool cmp(stu x,stu y){ |
| if(x.zf==y.zf){ |
| if(x.yw==y.yw){ |
| if(x.id>y.id){ |
| return 0; |
| }else{ |
| return 1; |
| } |
| }else{ |
| if(x.yw>y.yw){ |
| return 1; |
| }else{ |
| return 0; |
| } |
| } |
| }else{ |
| if(x.zf>y.zf){ |
| return 1; |
| }else{ |
| return 0; |
| } |
| } |
| } |
| int main(){ |
| int n; |
| cin>>n; |
| |
| for(int i=1;i<=n;i++){ |
| cin>>a[i].yw>>a[i].sx>>a[i].yy; |
| a[i].id=i; |
| a[i].zf=a[i].yw+a[i].sx+a[i].yy; |
| } |
| sort(a+1,a+n+1,cmp); |
| for(int i=1;i<=5;i++){ |
| cout<<a[i].id<<" "<<a[i].zf<<endl; |
| } |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步