社区讨论

WA!!求助!!

P4414[COCI 2006/2007 #2] ABC参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@m4bh257t
此快照首次捕获于
2024/12/05 23:28
去年
此快照最后确认于
2025/11/04 13:18
4 个月前
查看原帖
学校有要求,必须使用C语言编写,所以只能用scanf()了(
测试全是WA,但是检查不出什么问题,头都要炸了口牙
C
#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;
           }
       }
   }
}

回复

5 条回复,欢迎继续交流。

正在加载回复...