关键点是这道题和字符串没关系啊
by zhengshuyue @ 2023-09-24 15:03:44
自己实现 `max`、`min` 函数。
by hang2023 @ 2023-09-24 15:06:02
以下是 max/min 函数的定义:
```cpp
template<typename T>
T max(T a,T b) {return (a>b?a:b);}
template<typename T>
T min(T a,T b) {return (a>b?a:b);}
```
----------
禁止引战
by hang2023 @ 2023-09-24 15:07:47
@[shadow1syx](/user/1053560) 用 strcmp 或者 std::string
by Argvchs @ 2023-09-24 15:10:29
@[shadow1syx](/user/1053560)
你对两个 char* 比较,实际上比较的是他们的地址
第一个输出 yes 是因为编译器有优化,所有相同的 string literal(编译时可知的字符串,例如不能是输入的)都存储在同一地址
但是第二个输出 No 是因为你自己开了一个数组就存储在另外一个地址了
`strcmp(a, b)` 可以实现两个 `char*` 的字典序比较,$a > b$ 返回正,$a < b$ 返回负,$a = b$ 返回 $0$
或者你直接将类型改为 `std::string`(不需要指定长度),这样就可以直接 `a == b` 比较了
by Argvchs @ 2023-09-24 15:22:29
@[Argvchs](/user/533270) 谢谢大佬
@[hang2023](/user/989398) 我调用了math头文件 max和min没有受到影响 应该可以直接用的(就是懒得自己写函数了qwq)
by Kotori_Kawaii @ 2023-09-24 15:52:36
```
#include<stdio.h>
#include<math.h>
#include<string.h>
int max(int a,int b)
{
int max1;
if(a>b){
max1=a;
}else{
max1=b;
}
return max1;
}
int min(int a,int b)
{
int min1;
if(a>b){
min1=b;
}else{
min1=a;
}
return min1;
}
int main()
{
int a, b, c,least,mid,most;
scanf("%d %d %d", &a, &b, &c);
char input1[4] = "";
scanf("%s", input1);
most = max(max(a, b), c);
least = min(min(a, b), c);
mid = a + b + c - most - least;
a = least;
b = mid;
c = most;
if (strcmp(input1,"ABC") == 0) {
printf("%d %d %d", a, b, c);
}
else if(strcmp(input1,"ACB") == 0){
printf("%d %d %d", a, c, b);
}
else if (strcmp(input1, "BAC") == 0) {
printf("%d %d %d", b, a, c);
}
else if (strcmp(input1, "BCA") == 0) {
printf("%d %d %d", b, c, a);
}
else if (strcmp(input1, "CAB") == 0) {
printf("%d %d %d", c, a, b);
}
else if (strcmp(input1, "CBA") == 0) {
printf("%d %d %d", c, b, a);
}
return 0;
}
```
已AC 然后 @[hang2023](/user/989398) 对不起老哥我错了QAQ我不该懒的
同时谢谢 @[Argvchs](/user/533270) 大佬 非常感谢
by Kotori_Kawaii @ 2023-09-24 16:19:22
@[shadow1syx](/user/1053560) 大佬,就是问一下这里面input1[4] = "";为什么要用4阿,还有就是后面的= ""有什么用呢?
by zhuiming2323 @ 2023-09-25 22:54:13
@[zhuiming2323](/user/1055820) 因为字符串长度为3,多开一位防止溢出,这是习惯了(也有可能存储"\0",这个你搜一下比较好)
""表示字符串里面为空
by Kotori_Kawaii @ 2023-09-26 08:23:34