首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

ACM 入門經典:埃及直角三角形判斷(勾股定理)C 語言解法

     編輯:關於C

經典 ACM 入門題:給定三邊長,判斷能否構成直角三角形。核心是**勾股定理**:找出最長邊作為斜邊 c,驗證 a² + b² == c²。多組測試用例,以 0 0 0 結束。

算法邏輯

  1. 讀入 a, b, c,若全 0 退出。
  2. 排序/交換使 c = max(a,b,c),a,b 為其餘兩邊。
  3. 判斷 a*a + b*b == c*c,輸出 right 或 wrong。

精簡 C 代碼

#include 

int main() {
    int a, b, c, t;
    while (scanf("%d %d %d", &a, &b, &c) == 3) {
        if (a == 0 && b == 0 && c == 0) break;
        // 簡單三數排序,確保 c 最大
        if (a > b) { t = a; a = b; b = t; }
        if (a > c) { t = a; a = c; c = t; }
        if (b > c) { t = b; b = c; c = t; }
        if (a*a + b*b == c*c)
            printf("right\n");
        else
            printf("wrong\n");
    }
    return 0;
}

關鍵點

  • while (scanf(...) == 3) 標準多用例讀取模式。
  • 三次兩兩交換實現三數排序,無需數組/庫函數。
  • int 足夠:邊長 < 30000,平方 < 9e8,int (21e) 安全。
  • 輸出嚴格匹配 right/wrong,每行獨佔。

測試樣例

輸入:
6 8 10
25 52 60
5 12 13
0 0 0

輸出:
right
wrong
right

擴展思考

  • 浮點數邊長:需引入 EPS 容差判斷 fabs(a*a+b*b-c*c) < EPS。
  • 大整數邊長:用 long long 或大整數庫避免溢出。
  • 判斷銳/鈍三角形:a²+b² > c² 銳,< 鈍。
  • 畢達哥拉斯三元組生成:歐幾里得公式 a=m²-n², b=2mn, c=m²+n²。

總結

這道題是「讀入→排序→數學判斷→輸出」標準流程的完美練翋。掌握三數排序小技巧、循環讀取終止條件、勾股定理整數運算,即可秒殺同類幾何判斷題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved