C语言: 判断三个整数能否构成三角形(含溢出处理)
C语言: 判断三个整数能否构成三角形(含溢出处理)
这篇文章将介绍如何使用C语言编写代码,判断给定的三个整数能否构成一个三角形。
问题描述
给你三个非负整数,判断用这三个整数作为边长能否构成一个三角形。需要注意的是,由于整数类型有范围限制,两个int类型的数相加可能会超过int的最大值,导致溢出。
代码示例
#include <stdio.h>
int main() {
int a, b, c;
scanf('%d %d %d', &a, &b, &c);
if ((a + b > c || a + c > b || b + c > a) && (a - b < c || a - c < b || b - a < c || b - c < a || c - a < b || c - b < a)) {
printf('Yes
');
} else {
printf('No
');
}
return 0;
}
代码解释
- 输入: 代码首先使用
scanf函数从标准输入读取三个整数,存储在变量a、b和c中。 - 判断条件: 为了判断这三个整数能否构成三角形,需要满足以下两个条件:
- 任意两边之和大于第三边:
a + b > c,a + c > b,b + c > a - 任意两边之差小于第三边:
a - b < c,a - c < b,b - a < c,b - c < a,c - a < b,c - b < a
- 任意两边之和大于第三边:
- 溢出处理: 需要注意的是,直接使用加法和减法运算符可能会导致整数溢出。为了避免这个问题,可以使用逻辑运算符
||和&&将多个条件组合起来,避免直接进行加减运算。 - 输出: 如果满足上述两个条件,则使用
printf函数输出'Yes',表示可以构成三角形;否则输出'No'。
总结
这段代码清晰地展示了如何使用C语言判断三个整数能否构成三角形,并有效地处理了整数溢出问题,确保了代码的正确性和可靠性。
原文地址: https://www.cveoy.top/t/topic/bsT9 著作权归作者所有。请勿转载和采集!