@[ONicklgzh](/user/1132685) 需要排序。因为钝角只有一个
by SDLTF_凌亭风 @ 2023-11-15 15:02:52
@[ONicklgzh](/user/1132685) 这样。
```c
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int min(int a, int b) {
return (a < b) ? a : b;
}
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int t1 = max(a, max(b, c)), t2 = min(a, min(b, c)), t3 = a + b + c - t1 - t2;
a = t1, b = t2, c = t3;
if(a+b<=c||a+c<=b||b+c<=a){
printf("Not triangle"); return 0;
}
if(b*b+c*c==a*a){
printf("Right triangle\n");
}else if(b*b+c*c>a*a){
printf("Acute triangle\n");
}else if(b*b+c*c<a*a){
printf("Obtuse triangle\n");
}
if(a==b||a==c||b==c){
printf("Isosceles triangle\n");
}
if(a==b&&b==c){
printf("Equilateral triangle");
}
return 0;
}
```
by SDLTF_凌亭风 @ 2023-11-15 15:07:19
@[SDLTF_凌亭风](/user/367343) 你这样的话你需要借用指针排序
by W1661301298 @ 2023-11-21 20:30:47
@[W1661301298](/user/1149132) 你再看看我哪里需要指针了……
我使用了 ``t1, t2, t3`` 三个变量来存储最大最小和中间的值,而没有进行交换
by SDLTF_凌亭风 @ 2023-11-22 12:20:18
@[SDLTF_凌亭风](/user/367343) 就是你定义的那个函数,你需要把你要调换位置的那两个变量的地址输进去,对它们来进行换值
by W1661301298 @ 2023-11-22 19:26:29
@[SDLTF_凌亭风](/user/367343) 我不知道咋说,学了指针的话,应该是知道的吧
by W1661301298 @ 2023-11-22 19:28:21
@[W1661301298](/user/1149132) ?这个函数返回最大值并没有交换啊
请你跑一下我的代码
by SDLTF_凌亭风 @ 2023-11-23 12:47:04
@[W1661301298](/user/1149132) 人家的思路就不是用inplace的swap,如果要做swap用引用传参也可以,引用比较c++
by predatorG @ 2023-11-24 14:21:21
@[ONicklgzh](/user/1132685)
你为啥不先对边长排个序?或者找出最长边换给a,这样保证a是最长边,后面逻辑就简单了
by predatorG @ 2023-11-24 14:24:10
@[SDLTF_凌亭风](/user/367343)
```cpp
#include<cstdio>
using namespace std;
void swap(int& a, int& b) {
a^=b;
b^=a;
a^=b;
}
int main() {
int a,b,c;
// input ...
if(a<b) swap(a,b);
if(a<c) swap(a,c);
// 做一样的判断,此时a为最长边...
}
```
by predatorG @ 2023-11-24 14:30:28