只过了第一个测试点,但是自己测试是全对的怎么回事?

P5740 【深基7.例9】最厉害的学生

首先,list数组您只开到了list[0],list[1]。 想要有list[2]就要定义为list[3]. 还有,题目说若有多个相同成绩的,输出最靠前的那一个。所以判断总分的条件需要改一下呢 @[Tudoudidan](/user/773444)
by WZRYWZWY @ 2022-10-22 20:16:43


第一个问题:相同成绩优先级,再看看题:相同成绩先输入的在前,所以把<=改成< ```cpp #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,进而出错 应该为: ```cpp #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:30:57


然后就是数组越界: 应该为: ```cpp #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:33:01


```cpp #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:35:48


我也是个小白,大佬勿喷(QWQ)
by cuienning @ 2022-10-22 20:36:42


@[WZRYWZWY](/user/704668) 很好
by cuienning @ 2022-10-22 20:37:23


@[cuienning](/user/719179) 谢谢大佬(〃'▽'〃)(〃'▽'〃)
by Tudoudidan @ 2022-10-23 10:48:28


|