zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言小程序如何判断三角型类型

C语言程序 如何 类型 判断
2023-06-13 09:15:03 时间
复制代码代码如下:

#include<stdio.h>
#include<stdlib.h>
#define EPSINON  1e-3
#define ABS(a)  (((a)>0)?(a):(-a))//?:不支持表达式嵌套
#defineZERO(x)  ((x)>-EPSINON&&(x)<EPSINON)
#defineMAX(a,b) (((a)>(b))?(a):(b))
#defineMIN(a,b) (((a)<(b))?(a):(b))
floata,b,c;
floatmax,mid,min;
charinput_err_flag=0;
charjudge_err_flag=0;
intequal(floata,floatb)
{
 floattmp;
 tmp=a-b;
 tmp=ZERO(ABS(tmp));
 returntmp;
}
voidinput(void)
{
 a=b=c=0;
 printf("输入三条边的值:");
 scanf("%f%f%f",&a,&b,&c);
 if(!(a>0)||!(b>0)||!(c>0))
 {
  input_err_flag=1;
 }
}
voidsort(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);
}
voidjudge(void)
{
 floatmax_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("等边三角形。");
    elseif(equal(max_square,tmp))
     puts("等腰直角三角形。");
    elseif(max_square<tmp)
     puts("等腰锐角三角形。");
    else
     puts("等腰钝角三角形。");
   }
   else
   {
    if(equal(min,mid))
     puts("等边三角形。");
    else
     puts("等腰锐角三角形。");
   }
  }
  elseif(equal(max_square,tmp))
   puts("直角三角形。");
  elseif(max_square<tmp)
   puts("锐角三角形。");
  else
   puts("钝角三角形。");
 }
}
intmain(void)
{
 charcs,ch;
 do
 {
  input();
  sort();
  judge();
  if(input_err_flag)
  {
   input_err_flag=0;
   while((cs=getchar())!="\n"&&(cs=getchar())!=EOF);
   printf("输入错误,abc必须大于零,是否新输入(y/n):");
  }
  elseif(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!");
 return0;
}