m0_70393647 2022-11-27 03:00 采纳率: 100%
浏览 2
已结题

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

勾股定理

题目背景

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

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

当两较小边的平方和小于第三边的平方,说明是钝角(大于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
  • 写回答

3条回答 默认 最新

  • 关注

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

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日