首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言判斷三角形類型:邏輯順序錯誤導致等邊誤判為等腰、直角判斷失效

     編輯:程式設計綜合問答

經典入門練習:輸入三邊長判斷三角形類型。原代碼因 if-else 順序不當,導致等邊三角形被優先判定為等腰,且直角判斷邏輯有誤(4,5,6 非勾股數卻被判為直角)。

錯誤邏輯分析

if (a==b || a==c || b==c)           // 1. 先判等腰
    printf("等腰");
else if (a*a+b*b==c*c ...)            // 2. 再判直角
    printf("直角");
else if (a==b==c)                     // 3. 最後判等邊(永不執行)
    printf("等邊");

問題:a==b==c 在 C 中解析為 (a==b)==c,結果為 0 或 1,永不為真。

正確邏輯順序

if (a==b && b==c) {
    printf("等邊");
} else if (a==b || a==c || b==c) {
    printf("等腰");
} else if (a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b) {
    printf("直角");
} else {
    printf("普通三角形");
}

補充檢查

  • 先驗證 a+b>c && a+c>b && b+c>a 確保能構成三角形
  • 浮點數比較需引入 epsilon 容差
  • 輸入格式 scanf("%d,%d,%d") 要求逗號分隔,建議改為空格分隔更友好
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved