83分 怎样在我的代码基础上让输入三正确打出

P5717 【深基3.习8】三角形分类

@[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


| 下一页