1. 程式人生 > >C語言習題5.11--判斷三角形

C語言習題5.11--判斷三角形

問題及程式碼:

#include <stdio.h>
#define swap(x,y){x=x+y;y=x-y;x=x-y;}
/*婁月的妹妹劉月是個初中生,某天回來興高采烈的回家告訴姐姐他學會了如何憑藉三角形三邊判斷三角形的形狀(設兩條短邊為啊a,b;長邊為c,判斷a*a+b*b和c*c的關係),於是婁月告訴劉月,給她三條邊,她可以在一秒之內知道三角形是直角,鈍角還是銳角三角形,當然,這麼快只有程式設計才能做到。以下是婁月編寫的程式,由於忘記了一些知識點,三個判斷三角形的函式無法完成,於是  只能請聰明的你幫忙嘍。
煙臺大學計算機與控制工程學院
馮琬淇
*/
#include <stdio.h>
/*下面三個函式都是:是返回1,不是返回0*/
int right_triangle(double a,double b,double c); /*判斷直角三角形*/
int acute_triangle(double a,double b,double c); /*判斷銳角三角形*/
int obtuse_triangle(double a,double b,double c); /*判斷鈍角三角形*/
int main()
{
    double a,b,c;   /*三角形的三邊*/
    scanf("%lf %lf %lf",&a,&b,&c);  /*輸入三邊*/
    /*將三邊按照從小到大排好*/
    if(a>b)
        swap(a,b);
    if(a>c)
        swap(a,c);
    if(b>c)
        swap(b,c);
    /*根據if判斷選擇三角形*/
    if(acute_triangle(a,b,c))
        printf("銳角三角形\n");
    else if(right_triangle(a,b,c))
        printf("直角三角形\n");
    else if(obtuse_triangle(a,b,c))
        printf("鈍角三角形\n");
    return 0;
}
int right_triangle(double a,double b,double c) /*判斷直角三角形*/
{
    return (a*a+b*b==c*c);
}
int acute_triangle(double a,double b,double c) /*判斷銳角三角形*/
{
    return (a*a+b*b>c*c);
}
int obtuse_triangle(double a,double b,double c) /*判斷鈍角三角形*/
{
    return (a*a+b*b<c*c);
}

提交時只需提交right_triangle,acute_triangle,obtuse_triangle三個函式

Input 
三角形的三條邊,大小未知,不必考慮構不成三角形的情況

Output 
銳角三角形,直角三角形還是鈍角三角形

Sample Input 
3 4 5 
Sample Output 
直角三角形


執行結果:

總結心得:

主要是掌握公式,此次程式碼看起來比較麻煩,在以後的學習中希望能有方法改進減去部分長串的“double”