洛谷---三角形的分类C语言详解
题目描述
给出三条线段 a,b,c 的长度,均是不大于 10000 的整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢?
- 如果三条线段不能组成一个三角形,输出
Not triangle
;- 如果是直角三角形,输出
Right triangle
;- 如果是锐角三角形,输出
Acute triangle
;- 如果是钝角三角形,输出
Obtuse triangle
;- 如果是等腰三角形,输出
Isosceles triangle
;- 如果是等边三角形,输出
Equilateral triangle
。如果这个三角形符合以上多个条件,请按以上顺序分别输出,并用换行符隔开。
本题只需用判断三角形三边的关系
设三角形三边长为a,b,c.若
1.有任意一边为0,或两边之和小于第三边,则构不成三角形。
2.任意两边的平方和大于第三边,为锐角三角形。
3.任意两边的平方和等于第三边,为直角三角形。
4.任意两边的平方和小于第三边,为钝角三角形。
5.三边相等的三角形,为锐角三角形,等边三角形,等腰三角形。
6.任意两边相等的三角形为等腰三角形(所以需要单独判断)。
注 由于是任意的两边,所以三边都要进行比较。最简单的方法就是规定一条边为长边,逐个讨论。也可以先对a,b,c进行比较,选出长边。
这里是代码
#include<stdio.h>
int main()
{int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a==0||b==0||c==0||a+b<=c ||b+c<=a || a+c<=b)//构不成三角形 {printf("Not triangle");}else{//以a为长边 if(a>b && a>c && b*b+c*c>a*a)//三边的关系 ,两边之和大于第三边 {printf("Acute triangle\n");if(b==c){printf("Isosceles triangle");}}if(a>b && a>c && b*b+c*c==a*a)//两边之和等于第三边 {printf("Right triangle\n");if(b==c){printf("Isosceles triangle");}}if(a>b && a>c && b*b+c*c<a*a)//两边之和小于第三边 {printf("Obtuse triangle\n");if(b==c){printf("Isosceles triangle");}}//以b为长边 if(b>a && b>c && a*a+c*c>b*b){printf("Acute triangle\n");if(a==c){printf("Isosceles triangle");}}if(b>a && b>c && a*a+c*c==b*b){printf("Right triangle\n");if(a==c){printf("Isosceles triangle");}}if(b>a && b>c && a*a+c*c<b*b){printf("Obtuse triangle\n");if(a==c){printf("Isosceles triangle");}}//以c为长边 if(c>b && c>a&& b*b+a*a>c*c){printf("Acute triangle\n");if(b==a){printf("Isosceles triangle");}}if(c>b && c>a && b*b+a*a==c*c){printf("Right triangle\n");if(b==a){printf("Isosceles triangle");}}if(c>b && c>a && b*b+a*a<c*c){printf("Obtuse triangle\n");if(b==a){printf("Isosceles triangle");}}if(a==b&&b==c)//三边相等的情况 {printf("Acute triangle\n"); printf("Isosceles triangle\n");printf("Equilateral triangle");}}return 0;
}
洛谷---三角形的分类C语言详解相关推荐
- Drools 规则语言详解(上)
http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...
- 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- c++指针详解_c语言详解sizeof
一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括 ...
- 排座系统c语言,2008noip排座位C语言详解.doc
2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...
- 有向图邻接矩阵c语言编程,邻接矩阵有向图(一)之 C语言详解
本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解
本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- IP地址分类及范围详解
IP地址分为公网IP地址(合法IP地址)和私有IP地址 公网IP地址主要应用于Internet上的主机访问,而私有IP地址应用于局域网中计算机的相互通信. IP地址的表示形式:分为二进制表示和点分十进 ...
- 如何用c语言编写stm32的程序吗,STM32入门C语言详解
<STM32入门C语言详解>由会员分享,可在线阅读,更多相关<STM32入门C语言详解(6页珍藏版)>请在人人文库网上搜索. 1.最新 料推荐阅读 flash : 芯片内部存储 ...
- functional java_java中functional interface的分类和使用详解
java 8引入了lambda表达式,lambda表达式实际上表示的就是一个匿名的function. 在java 8之前,如果需要使用到匿名function需要new一个类的实现,但是有了lambda ...
- 顺序栈基本操作(入栈和出栈)C语言详解
#include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...
最新文章
- C语言实现十大经典排序算法
- python培训好学吗-Python爬虫培训好学吗?
- ImportError: cannot import name ‘image‘ from ‘PIL‘ (C:\ProgramData\Anaconda3\lib\site-packages\PIL\_
- 使用 cglib_CGLib 动态代理 原理解析
- 标签体系、用户分群、用户画像「玩味」解读,你沦为形式主义了吗?
- python基础(part5)--容器类型之字符串
- python将元祖写入txt文档_python元祖和文件用法举例
- 微信小程序登录页php后台,微信小程序:微信登陆(ThinkPHP作后台)
- 力控批量添加变量_力控变量.ppt
- Discord是什么
- 英语单词辨异 —— 容易理解错的单词
- Themida/WinLicense V1.8.2.0 +脱壳 FOR PcShare远程控制会员版本20070826
- 用C语言打印九九乘法表
- TCP长连接和短连接区别
- 传统备份 VS 云备份?
- 女友闹别扭不用担心,这个撩妹黑科技轻松哄好
- computer-06 其它
- shell编程之sort、uniq、tr
- 微信小程序海报生成图片合成工具类
- Eclipse 导入工程乱码的问题之解决方法
热门文章
- 接入支付宝支付SDK
- leetcode402. 移掉 K 位数字
- 软件开发之大忌:想当然
- android8 保卫萝卜,保卫萝卜挑战8攻略图解,学会这些,轻松过第八关
- Qt基于networkmanager嵌入式linux的wifi网络连接
- kindle paper white部分优化
- 关于NS3中各个WifiRemoteStationManager(二)
- Intellij IDEA 提示cannot find declaration to go to 解决方法
- 前端部署的灵魂拷问,你能回答出几个?【部署必看篇】
- POI2011 同谋者 Conspiracy