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

ACM 題目解析:Egypt(判斷直角三角形)

     編輯:關於C語言

題目描述

輸入多組測資,每組三個正整數(<30000)代表三角形三邊長,以 0 0 0 結束。判斷該三角形是否為直角三角形(即是否符合畢氏定理:兩短邊平方和等於最長邊平方)。

輸入輸出範例(官方未給,補充說明)

輸入:
3 4 5
5 12 13
6 8 10
0 0 0

輸出:
right
right
right

若非直角三角形輸出 wrong(視具體 OJ 要求而定,常見為 right/wrong)。

解題步驟

  1. 讀取三邊 a, b, c,直到三者皆為 0。
  2. 排序或直接找出最大值作為斜邊 c,其餘為 a, b。
  3. 判斷 a*a + b*b == c*c(注意整數溢位:30000^2 = 9e8 仍在 32 位有號整數範圍內)。
  4. 輸出結果。

參考程式碼

#include <stdio.h>
#include <algorithm> // C++ 可用 sort,純 C 需自行排序或比大小

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

注意事項

  • 題目圖片顯示為直角三角形示意圖,僅作說明用途。
  • 輸入為多行,每行三數,scanf 自動跨行讀取。
  • 若使用 C++ 可直接 #include <algorithm> sort;純 C 建議用上述三兩比較交換法。

延伸應用

此為經典「畢氏定理」檢測問題,常見於 ACM 入門題庫(如 POJ 1017、UVa 10347 等)。可擴展判斷銳角、鈍角三角形:a²+b² > c² 為銳角,< 為鈍角。

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