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

复制代码 代码如下:

#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;
}

时间: 2024-10-12 00:46:22

C语言小程序 如何判断三角型类型_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) #

C语言小程序 数组操作示例代码_C 语言

复制代码 代码如下: #include <stdio.h>#include <stdlib.h>#include <time.h>int size = 0;int flag = 0;void output(int *arry){ int i = 0; for(i=0; i<size; i++) {  printf("arry[%d]=%d\t",i,arry[i]);  if((i+1)%5 == 0)   printf("\n&qu

C语言小程序 如何判断两个日期之差

输入两个日期,计算之间相差多少天. 用了两种方法实现,第二种利用结构体,代码比较清晰,其余的都一样   1.普通的写法 复制代码 代码如下: #include <stdio.h> int leapyear(int year) {  if((year%4==0 && year%100!=0) || year%400==0)   return 1;  else   return 0; } int days(int *day1, int *day2) {  int i=0;  int

C语言小程序 如何判断两个日期之差_C 语言

1.普通的写法 复制代码 代码如下: #include <stdio.h>int leapyear(int year){ if((year%4==0 && year%100!=0) || year%400==0)  return 1; else   return 0;}int days(int *day1, int *day2){ int i=0; int *tmp; int diff = 0; const int month[13]={0,31,28,31,30,31,30,

格式-一个c语言小程序求解?

问题描述 一个c语言小程序求解? #include int main() { double a=0,b=0; scanf("%f%d",&a,&b); printf("%fn%dn",a,b); system("pause"); return 0; } 输出结果如图所示,为什么输入格式以浮点数形式输入不可以正确输出,而整形的可以 解决方案 C语言格式输入函数scanf()详解 解决方案二: 这是其中对 float 和 double

c语言-C语言小程序运行错误,求解?

问题描述 C语言小程序运行错误,求解? #include 2 int main() 3 { 4 int i,j; 5 char ch; 6 for(i=1;i<5;i++) 7 { 8 char ='A'+i-1; 9 for(j=1;j<2*i-1;j++) 10 printf("%cn",ch); 11 } 12 return 0; 13 } 14 15 A.c: 在函数'main'中: A.c:8:8: 错误: expected identifier or '(' b

C/C++程序开发中实现信息隐藏的三种类型_C 语言

无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 不可见不可用 就是说模块内部的变量.结构体.类定义对外部而已完全隐藏,外部对此一无所知.常用的实现方法就是利用不透明指针,请参见我的博文C语言开发函数库时利用不透明指针对外隐藏结构体细节. 这种方法同样适用于C++语言,一种可能的实现方式为面向接口编程. 头文件 IMyClass.h class

小程序如何判断测试环境和线上环境

因测试环境与线上环境的域名不同,上线时每次都需要该域名配置,是否有啥方法可以判断小程序当前运行环境呢? 用wx.getSystemInfoSync()判断systemInfo.platform == 'devtools'

C++ 中const和复合类型_C 语言

1.const和引用 可以把引用绑定在常量上,称之为,对常量的引用.不能对那个引用赋值. 如: const int ci = 1024; const int &ri = ci; 解读:ri是对ci的引用.ri的const意思是视ci为变量. 对于常量,只能使用"对常量的引用"这个引用方式 int &ri = ci;是错误的,因为ci不能赋值,但是可能会对ri赋值从而影响const限定. 所以,他们(制定标准的人)创造了 对常量的引用 的 引用方式. 下面高能!!! 上面