首次是題目
輸入三角形的三條邊長,判斷能否構成三角形,若能,判斷是否等邊、等腰三角形,同時判斷是直角、銳角還是鈍角三角形。
要求:先提示“輸入三角形的三個邊長:”,輸入的三個資料用逗号分割,通過scanf函數的傳回值判斷是否正确輸入了三個數,然後判斷能否構成三角形(任意兩邊和大于第三邊);
提示:判斷是直角、銳角、鈍角三角形的方法是,先找到最長的邊,若最長邊的平方等于其它兩邊的平方和是直角三角形,小于其它兩邊的平方和是銳角三角形,大于其它兩邊的平方和是銳角三角形。
作為新手,敲代碼敲了一天,最後還到處都是錯誤,不過後來經過努力,還是成功打出來了,但是輸入了3,4,5居然是鈍角三角形,差點沒把我笑吐,哈哈直到現在也沒能解決,先發出來叭,下次有空再改。晚安
#include <stdio.h>
int main()
{
int a, b, c, t, m, n, p, q;
printf("輸入三角型三邊的長度(a,b,c):");
scanf_s("%d,%d,%d" ,& a, &b, &c);
n = a, p = b, q = c;
if ((a + b) < c || (a + c) < b || (b + c) < a)
{
printf("資料輸入錯誤!");
}
else
if (a != b && a != c && c != b)
{
if ((b < a && a>c) && b < c)
{
t = b, b = c, c = t;
}
else
if ((b > a && b > c) && a < c)
{
t = a, m = c, a = b, b = c, c = t;
}
else
if ((c > a && c > b) && b < a)
{
t = b, m = a, a = c, b = m, c = t;
}
if ((b * b + c * c) == a * a)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:直角三角形", n, p, q);
}
if ((b * b + c * c) > a * a)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:鈍角三角形", n, p, q);
}
if ((b * b + c * c) < a * a)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:銳角三角形", n, p, q);
}
}
else
if (a == b || a == c || b == c)
{
if ((a == b) && a != c)
{
if ((a * a + b * b )== c * c)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰直角三角形", n, p, q);
}
if ((a * a + b * b) < c * c)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰鈍角三角形", n, p, q);
}
}
if ((a == c) && a != b)
{
if( (a * a + c * c) == b * b)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰直角三角形", n, p, q);
}
if( (a * a + c * c) < b * b)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰鈍角三角形", n, p, q);
}
if ((b == c) && b != a)
{
if( (b * b + c * c )== a * a)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰直角三角形", n, p, q);
}
if( (b * b + c * c )< a * a)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等腰鈍角三角形", n, p, q);
}
}
if (a == b && a == c)
{
printf("由邊長是%d,%d,%d三邊構成的三角形是:等邊三角形", n, p, q);
}
}
return 0;
}
}