如果有分支语句做太多了,能用循环语句做吗?

勾股定理

题目背景

我们知道勾股定理是中国古代最伟大的数学发现之一,它可以用来判定直角三角形:当两边的平方和等于第三边的平方,说明是直角三角形。

但大多数人不知道的是,勾股定期还有如下拓展:

当两较小边的平方和小于第三边的平方,说明是钝角(大于90°的角)三角形;

当两较小边的平方和大于第三边的平方,则说明是锐角(小于90°的角)三角形。

题目描述

给出三条线段 $a,b,c$ 的长度,打算把这三条线段拼成一个三角形,它可以是什么三角形呢?

  • 如果三条线段不能组成一个三角形,输出Not triangle
  • 如果是直角三角形,输出Right triangle
  • 如果是锐角三角形,输出Acute triangle
  • 如果是钝角三角形,输出Obtuse triangle
  • 如果是等腰三角形,输出Isosceles triangle
  • 如果是等边三角形,输出Equilateral triangle

如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。

输入格式

输入数据仅一行,三个空格隔开的整数

输出格式

输出若干行,均为英文描述,表示三角形的种类(注意首字母大写以及两个英文单词中间的空格)

样例 #1

样例输入 #1

3 4 5

样例输出 #1

Right triangle

样例 #2

样例输入 #2

6 6 8

样例输出 #2

Acute triangle
Isosceles triangle

循环和分支结构是两种不同用途的结构,不能相互替代,这个题目只能用分支结构

img

代码如下:

#include <iostream>
using namespace std;
int main()
{
    int a, b, c;
    int t;
    cin >> a >> b >> c;
    //a,b,c从小到大排序
    if (a > b)
    {
        t = a;
        a = b;
        b = t;
    }
    if (a > c)
    {
        t = a;
        a = c;
        c = t;
    }
    if (b > c)
    {
        t = b;
        b = c;
        c = t;
    }

    
    if (a * a + b * b == c * c)
        cout <<"Right triangle\n";
    else if (a * a + b * b > c * c)
        cout <<"Acute triangle\n";
    else
        cout <<"Obtuse triangle\n";

    if (a == b || a == c || b == c)
        cout <<"Isosceles triangle\n";
    if (a == b && b == c)
        cout <<"Equilateral triangle\n";
    
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632