自己运行全对但交上来全WA,蒟蒻求助

P4414 [COCI2006-2007#2] ABC

``` #include<bits/stdc++.h> using namespace std; long long v[4]; string s; struct node{ int n; char h; }arr[4]; int main(){ cin>>v[1]>>v[2]>>v[3]>>s; sort(v+1,v+1+3); for(int i=1;i<=3;i++){ arr[i].n=v[i]; if(i==1){ arr[i].h='A'; } if(i==2){ arr[i].h='B'; } if(i==3){ arr[i].h='C'; } } for(int i=0;i<s.size();i++){ if(s[i]=='A'){ cout<<arr[1].n<<" "; } else if(s[i]=='B'){ cout<<arr[2].n<<" "; } else{ cout<<arr[3].n<<" "; } } return 0; } ```
by liu_le_chen @ 2023-08-07 17:23:53


可以自己看一下代码,别忘了关注
by liu_le_chen @ 2023-08-07 17:25:07


```cpp #include<bits/stdc++.h> using namespace std; int aa[4]; char bb[4]; int main(){ for(int i = 0; i < 3; i++){ cin >> aa[i]; } sort(aa, aa + 3); int a = aa[0]; int b = aa[1]; int c = aa[2]; for(int i = 0; i < 3; i++){ cin >> bb[i]; if(bb[i] == 'A'){ cout << a << ' '; }else if(bb[i] == 'B'){ cout << b << ' '; }else{ cout << c << ' '; } } return 0; } ``` sort快排,你值得拥有(可以参考参考
by xawm_qwq @ 2023-08-07 17:28:27


对于数组,一般最后一位为`\0`,标志着字符数组的结束,只有含有`\0`结尾的字符数组**才是有意义的字符数组。** 基于此,每次对数组的空间申请,**都应该多申请一位给`\0`的结尾标志符。** 而代码中,题主的`int num[3]`和`char adsj[]3`均只有三位,且**都用来存储数据了**。 此时,`\0`已没有位置,自然WA。 将长度增加一位即可。 萌新解释,请多指教。
by jlyloo @ 2023-08-07 18:20:12


@[jlyloo](/user/1043613) 抱歉,应是`char adsj[3]`。
by jlyloo @ 2023-08-07 18:21:40


谢谢大佬们,AC了
by nahida_badminton @ 2023-08-08 10:19:09


|