你的排序有问题
试一下:`2 3 1`
by xiaosuan @ 2023-07-07 11:23:29
我手动模拟了一下:
1. 原数据:2 3 1
2. 经过 $a$ 与 $b$ 的交换后:2 3 1
3. 经过 $b$ 与 $c$ 的交换后:2 1 3
4. 经过 $a$ 与 $c$ 的交换后:2 1 3
by xiaosuan @ 2023-07-07 11:27:09
可以把 $a$ 与 $c$ 的交换放在最前面,或者用其他的排序方法。
by xiaosuan @ 2023-07-07 11:29:09
还有,字符串不是这么比较的。
比较两个字符串,应使用库 `string.h` 中的 `strcmp` 函数。当这个函数返回 $0$ 时,两个字符串相等。
如果直接比较的话,`C` 会将字符数组转变为指针进行比较,也就是比较两个字符串的地址是不是一样的。这显然不是我们想要的。
by xiaosuan @ 2023-07-07 11:43:13
@[xiaosuan](/user/529574) okk, 谢谢啦~
by zhaoanqiEtayo @ 2023-07-07 14:41:55
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int a,b,c,t;
char q[4];
scanf("%d %d %d\n",&a,&b,&c);
scanf("%s",q);
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(strcmp(q,"ABC")=0)
{
printf("%d %d %d",a,b,c);
}
if(strcmp(q,"ACB")=0)
{
printf("%d %d %d",a,c,b);
}
if(strcmp(q,"BAC")=0)
{
printf("%d %d %d",b,a,c);
}
if(strcmp(q,"BCA")=0)
{
printf("%d %d %d",b,c,a);
}
if(strcmp(q,"CAB")=0)
{
printf("%d %d %d",c,a,b);
}
if(strcmp(q,"CBA")=0)
{
printf("%d %d %d",c,b,a);
}
return 0;
}
```
@[xiaosuan](/user/529574) 这样好像也不对??
by zhaoanqiEtayo @ 2023-07-07 14:55:51
`=` 是赋值
`==` 才是比较是否相等
by xiaosuan @ 2023-07-07 15:43:00