Tudoudidan @ 2022-10-22 20:08:18
#include<bits/stdc++.h>
using namespace std;
int main(){
char name[8],bestname[8];
short num,bs=0,list[2],blist[2];
cin>>num;
for(int i=0;i<=num;i++){
cin>>name;
cin>>list[0]>>list[1]>>list[2];
if((list[0]+list[1]+list[2])>=bs){
blist[0]=list[0];
blist[1]=list[1];
blist[2]=list[2];
for(int j=0;j<=8;j++){
bestname[j]=name[j];
}
bs=list[0]+list[1]+list[2];
}
}
cout<<bestname<<' '<<blist[0]<<' '<<blist[1]<<' '<<blist[2];
}
by WZWZWZWY @ 2022-10-22 20:16:43
首先,list数组您只开到了list[0],list[1]。
想要有list[2]就要定义为list[3].
还有,题目说若有多个相同成绩的,输出最靠前的那一个。所以判断总分的条件需要改一下呢
@Tudoudidan
by cuienning @ 2022-10-22 20:30:57
第一个问题:相同成绩优先级,再看看题:相同成绩先输入的在前,所以把<=改成<
#include<bits/stdc++.h>
using namespace std;
int main(){
char name[8],bestname[8];
short num,bs=0,list[2],blist[2];
cin>>num;
for(int i=0;i<=num;i++){
cin>>name;
cin>>list[0]>>list[1]>>list[2];
if((list[0]+list[1]+list[2])>bs){
blist[0]=list[0];
blist[1]=list[1];
blist[2]=list[2];
for(int j=0;j<=8;j++){
bestname[j]=name[j];
}
bs=list[0]+list[1]+list[2];
}
}
cout<<bestname<<' '<<blist[0]<<' '<<blist[1]<<' '<<blist[2];
}
这时又有一个问题:如果成绩都为0,就会随机bestname,进而出错 应该为:
#include<bits/stdc++.h>
using namespace std;
int main(){
char name[8],bestname[8];
short num,bs=-1,list[2],blist[2];
cin>>num;
for(int i=0;i<=num;i++){
cin>>name;
cin>>list[0]>>list[1]>>list[2];
if((list[0]+list[1]+list[2])>bs){
blist[0]=list[0];
blist[1]=list[1];
blist[2]=list[2];
for(int j=0;j<=8;j++){
bestname[j]=name[j];
}
bs=list[0]+list[1]+list[2];
}
}
cout<<bestname<<' '<<blist[0]<<' '<<blist[1]<<' '<<blist[2];
}
然后又错了,只过了1个点,我也很无语
by cuienning @ 2022-10-22 20:33:01
然后就是数组越界: 应该为:
#include<bits/stdc++.h>
using namespace std;
int main(){
char name[8],bestname[8];
short num,bs=-1,list[10],blist[10];
cin>>num;
for(int i=0;i<=num;i++){
cin>>name;
cin>>list[0]>>list[1]>>list[2];
if((list[0]+list[1]+list[2])>bs){
blist[0]=list[0];
blist[1]=list[1];
blist[2]=list[2];
for(int j=0;j<=8;j++){
bestname[j]=name[j];
}
bs=list[0]+list[1]+list[2];
}
}
cout<<bestname<<' '<<blist[0]<<' '<<blist[1]<<' '<<blist[2];
}
然后就发现就WA了一个
by cuienning @ 2022-10-22 20:35:48
#include<bits/stdc++.h>
using namespace std;
int main(){
char name[9],bestname[9];
short num,bs=-1,list[10],blist[10];
cin>>num;
for(int i=0;i<=num;i++){
cin>>name;
cin>>list[0]>>list[1]>>list[2];
if((list[0]+list[1]+list[2])>bs){
blist[0]=list[0];
blist[1]=list[1];
blist[2]=list[2];
for(int j=0;j<=8;j++){
bestname[j]=name[j];
}
bs=list[0]+list[1]+list[2];
}
}
cout<<bestname<<' '<<blist[0]<<' '<<blist[1]<<' '<<blist[2];
}
这样做竟然AC了,应该是名字数组越界
by cuienning @ 2022-10-22 20:36:42
我也是个小白,大佬勿喷(QWQ)
by cuienning @ 2022-10-22 20:37:23
@WZRYWZWY 很好
by Tudoudidan @ 2022-10-23 10:48:28
@cuienning 谢谢大佬(〃'▽'〃)(〃'▽'〃)