C语言三角形判断代码BUG:等边三角形被识别为等腰三角形
问题分析与修复:等边三角形判断逻辑错误
问题现象
当输入三边均为3时,程序未输出预期的“equilateral(等边三角形)”,反而输出“isosceles(等腰三角形)”。
错误原因
代码中等边三角形的判断条件a==b==c写法错误。在C语言中,表达式会从左到右依次求值:
- 先计算
a==b,得到布尔结果(相等为1,不等为0) - 再将这个结果与
c比较
当a=b=c=3时,3==3得到1,接着1==3的结果为假,导致第一个if条件不成立,程序进入了判断等腰三角形的分支。
修复方案
将等边三角形的判断条件改为a == b && b == c,这样可以正确判断三边是否全部相等。
修正后的完整代码
#include <stdio.h> int main() { int a; int b; int c; printf("Enter first side: "); scanf("%d", &a); printf("Enter second side: "); scanf("%d", &b); printf("Enter third side: "); scanf("%d", &c); if (a+b>c && b+c>a && c+a>b) { if (a == b && b == c) { printf("The triangle is equilateral."); } else if (a==b || b==c || c==a) { printf("The triangle is isosceles."); } else { printf("The triangle is scalene."); } } else { printf("Triangle is not valid."); } return 0; }
修复效果
输入三边均为3时,程序会正确输出:
Enter first side: 3
Enter second side: 3
Enter third side: 3
The triangle is equilateral.
内容的提问来源于stack exchange,提问作者Subhajit Roy
相关产品推荐
相关产品推荐

