当前位置: 首页> 新闻> 会展 > hnust 1093 实验2-5:判定三角形

hnust 1093 实验2-5:判定三角形

时间:2025/8/28 14:57:43来源:https://blog.csdn.net/weixin_50950742/article/details/139944598 浏览次数:1次

hnust 1093 实验2-5:判定三角形

题目描述
编写程序。实现根据用户输入的三角形的边长,判定是何种三角形。

输入
输入三个数(用逗号隔开),分别代表三角形的三条边。

输出
/判断三边是否构成三角形/
{
  /*如果三条边均相等,则输出为等边三角形: printf(“Equilateral triangle\n”); */
  else  /如果只有两条边相等,则输出为等腰三角形:printf(“Isoceles triangle\n”)/
  else  /*如果两边的平方和等于第三边平方,则输出为直角三角形:printf(“Right-angled triangle\n”) */
     else /输出为一般三角形:printf(“General triangle\n”);/
}
else
/*输出不能构成三角形:printf(“Can’t make up of triangle\n”); */

样例输入 Copy
3,4,5
样例输出 Copy
Right-angled triangle
提示
本题由实验指导书中的实验题第4题改编而成。

注意:不要提示信息。

解题过程

数据不大,暴力神话

等边三角形:三条边长度相等。
等腰三角形:两条边长度相等。
普通三角形:三条边长度都不相等。

下面是对代码的详细解析:

  1. 头文件

    • 包含 cstdioiostream 头文件,分别用于C风格的输入输出和C++风格的输入输出。
  2. 命名空间

    • 使用 using namespace std; 来避免在标准库类型和函数前加 std::
  3. 变量声明

    • 定义了三个 double 类型的变量 abc,用于存储输入的三个边长。
  4. 输入边长

    • 使用 scanf 函数读取三个边长,格式说明符 %lf 用于读取 double 类型的数值,, 指定了输入字段分隔符。
  5. 计算三边

    • 使用 maxmin 函数(需要包含 <algorithm> 头文件)来找出三个边中的最大边 x 和最小边 y
    • 计算第三边 z,它是三边和减去 xy
  6. 判断三角形类型

    • 首先判断三边长能否构成三角形,即任意两边之和大于第三边,如果不能,输出 “Can’t make up of triangle”。
    • 如果能构成三角形,进一步判断三角形的类型:
      • 如果 xyz 任意两边的平方和减去第三边的平方为0,输出 “Right-angled triangle”(直角三角形)。
      • 如果上述差值大于0,输出 “General triangle”(一般三角形)。
      • 如果三边相等,输出 “Equilateral triangle”(等边三角形)。
      • 如果有两边相等,输出 “Isosceles triangle”(等腰三角形)。
  7. 输出结果

    • 根据判断结果输出相应的三角形类型。
  8. 程序结束

    • 返回0,表示程序正常结束。

代码逻辑分析

  • 代码首先读取三个边长,然后通过数学逻辑判断这些边长能否构成三角形,以及三角形的类型。
  • 使用了 maxmin 函数简化了找出最大边和最小边的过程。

潜在问题

  • 代码中 maxmin 函数的使用没有包含 <algorithm> 头文件,这会导致编译错误。
  • 输出时 “General tria” 应该是 “General triangle”,代码中存在拼写错误。

改进建议

  • 确保包含 <algorithm> 头文件以使用 maxmin 函数。
  • 修正输出字符串中的拼写错误。
  • 考虑使用 std::cinstd::cout 替代 scanfprintf,以保持代码的一致性并使用C++标准库。

AC代码

#include<cstdio>
#include<iostream>
using namespace std;
int main()
{double a,b,c;scanf("%lf,%lf,%lf",&a,&b,&c);double x,y,z;x=max(a,max(b,c));y=min(a,min(b,c));z=a+b+c-x-y;if(x>=y+z)cout<<"Can't make up of triangle\n"<<endl;else if(y*y+z*z-x*x==0)cout<<"Right-angled triangle"<<endl;else if((y*y+z*z-x*x>0)||(y*y+z*z-x*x<0))cout<<"General tria"<<endl;else if((x==y)&&(y==z)&&(x==z))cout<<"Equilateral triangle"<<endl;else if((x==z)||(x==y)||(y==z))cout<<"Isoceles triangle"<<endl;return 0;
}
关键字:hnust 1093 实验2-5:判定三角形

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: