奇怪的题,不理解了

P4414 [COCI2006-2007#2] ABC

你的排序有问题 试一下:`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


|