程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C語言小程序 如何判斷三角型類型

C語言小程序 如何判斷三角型類型

編輯:更多關於編程
    第一個判斷三角形的類型,兩個浮點型數據不能直接判斷相等,為了輸入方便一些,自己設置的精度比較低,10^(-3)   復制代碼 代碼如下:
    #include <stdio.h>
    #include <stdlib.h>
    #define EPSINON  1e-3
    #define ABS(a)  (((a)>0)?(a):(-a)) //?:不支持表達式嵌套
    #define ZERO(x)  ((x)>-EPSINON && (x)<EPSINON)
    #define MAX(a,b) (((a)>(b))?(a):(b))
    #define MIN(a,b) (((a)<(b))?(a):(b))
    float a, b, c;
    float max, mid, min;
    char input_err_flag = 0;
    char judge_err_flag = 0;
    int equal(float a, float b)
    {
     float tmp;
     tmp = a - b;
     tmp = ZERO(ABS(tmp));
     return tmp;
    }
    void input(void)
    {
     a = b = c = 0;
     printf("輸入三條邊的值:");
     scanf("%f %f %f",&a, &b, &c);
     if(!(a>0) || !(b>0) || !(c>0))
     {
      input_err_flag = 1;
     }
    }
    void sort(void)
    {
     max = MAX(MAX(a,b),c);
     min = MIN(MIN(a,b),c);
     if(MAX(a,b) < c)
      mid = MAX(a,b);
     else
      mid = MAX(MIN(a,b),c);
    }
    void judge(void)
    {
     float max_square, mid_square, min_square, tmp;
     if(max >= (mid+min))
     {
      judge_err_flag = 1;
     }
     else
     {
      max_square = max * max;
      mid_square = mid * mid;
      min_square = min * min;
      tmp = mid_square + min_square;
      if(equal(mid,min) || equal(max, mid))
      {
       if(equal(mid, min))
       {
        if(mid == max)
         puts("等邊三角形。");
        else if(equal(max_square, tmp))
         puts("等腰直角三角形。");
        else if(max_square < tmp)
         puts("等腰銳角三角形。");
        else
         puts("等腰鈍角三角形。");
       }
       else
       {
        if(equal(min, mid))
         puts("等邊三角形。");
        else
         puts("等腰銳角三角形。");
       }
      }
      else if(equal(max_square, tmp))
       puts("直角三角形。");
      else if(max_square < tmp)
       puts("銳角三角形。");
      else
       puts("鈍角三角形。");
     }
    }
    int main(void)
    {
     char cs, ch;
     do
     {
      input();
      sort();
      judge();
      if(input_err_flag)
      {
       input_err_flag = 0;
       while((cs=getchar())!='n' && (cs=getchar())!=EOF);
       printf("輸入錯誤,a b c必須大於零,是否新輸入(y/n):");
      }
      else if(judge_err_flag)
      {
       judge_err_flag = 0;
       while((cs=getchar())!='n' && (cs=getchar())!=EOF);
       printf("組不成三角形,是否重新輸入(y/n):");
      }
      else
      {
       while((cs=getchar())!='n' && (cs=getchar())!=EOF);
       printf("是否再輸入一組數據(y/n):");
      }
      ch = getchar();
     }
     while(ch=='y' || ch=='Y' || ch=='n');
     puts("Goodbye!");
     return 0;
    }
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved