SXe16384 @ 2024-12-05 23:27:38
学校有要求,必须使用C语言编写,所以只能用scanf()了(
测试全是WA,但是检查不出什么问题,头都要炸了口牙
#include<stdio.h>
void turn(int x[], int m, int n);
void bubble(int arr[], int l);
//这里引入了自己写的冒泡排序法的函数,已知排序函数部分没有问题(别的题也用过,都通过了)请大佬忽略
int main(){
char ord[3];
int x[3];
int y[3];
scanf("%d%d%d",&x[0], &x[1], &x[2]);
getchar();
scanf("%s", ord);
getchar();
//先把输入按要求接收好
bubble(x, 3);
//把三个数字从小到大排个序
for(int i = 0; i < 3; i ++){
if(ord[i] == 'A')
y[i] = x[0];
if(ord[i] == 'B')
y[i] = x[1];
if(ord[i] == 'C')
y[i] = x[2];
}
//根据ABC的位置把数字重新安排位置
printf("%d %d %d", y[0], y[1], y[2]);
return 0;
//输出
}
//下面的函数都和排序有关,都是没问题的,请大佬忽略
void turn(int x[], int a, int b){
int t;
t = x[a];
x[a] = x[b];
x[b] = t;
return;
}
void bubble(int arr[], int l){
int flag = 1;
while (flag == 1){
flag = 0;
for (int i = 0; i <= l - 2; i ++){
if(arr[i] > arr[i + 1]){
turn(arr, i, i + 1);
flag = 1;
}
}
}
}
by zhs_TLE @ 2024-12-06 00:32:18
@SXe16384 把O2优化关了就对了
by zhs_TLE @ 2024-12-06 00:33:19
求关 @SXe16384
by schirst @ 2024-12-06 07:44:15
众所周知,字符串结尾其实有一个隐藏的'\0',所以问题很简单,你的ord数组越界了,开到4以上就不厌氧了
by SXe16384 @ 2024-12-06 13:10:41
@schirst有用!做题的时候没有真正理解\0这个概念。谢谢大佬解惑!
by SXe16384 @ 2024-12-06 13:13:59
@zhs_TLE我关了优化,确实就可以过了,谢谢大佬,已关!