輸入多組測資,每組三個正整數(<30000)代表三角形三邊長,以 0 0 0 結束。判斷該三角形是否為直角三角形(即是否符合畢氏定理:兩短邊平方和等於最長邊平方)。
輸入: 3 4 5 5 12 13 6 8 10 0 0 0 輸出: right right right
若非直角三角形輸出 wrong(視具體 OJ 要求而定,常見為 right/wrong)。
a, b, c,直到三者皆為 0。c,其餘為 a, b。a*a + b*b == c*c(注意整數溢位:30000^2 = 9e8 仍在 32 位有號整數範圍內)。#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 自動跨行讀取。#include <algorithm> sort;純 C 建議用上述三兩比較交換法。此為經典「畢氏定理」檢測問題,常見於 ACM 入門題庫(如 POJ 1017、UVa 10347 等)。可擴展判斷銳角、鈍角三角形:a²+b² > c² 為銳角,< 為鈍角。