C语言小程序(一)、判断三角型类型
2013-07-21 20:57
316 查看
最近回炉重造C语言,陆续写一些比较短的代码,选择其中的一些贴到这里,都是在Linux下的代码,Windows未测试。
第一个判断三角形的类型,两个浮点型数据不能直接判断相等,为了输入方便一些,自己设置的精度比较低,10^(-3)。
第一个判断三角形的类型,两个浮点型数据不能直接判断相等,为了输入方便一些,自己设置的精度比较低,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; }
相关文章推荐
- C语言小程序(一)、判断三角型类型
- C语言实现三角形类型判断
- 【Java基础】Java入门程序&基础数据类型(转换)&逻辑判断&运算等
- 判断列的类型的程序代码段
- C语言:判断三角形的类型
- C语言判断三角形类型
- c语言求三角形的面积及判断三角形类型
- C语言输入三角形边长判断其类型并输出面积实例代码
- C语言大小端判断程序
- C语言 编写一个c程序判断回文字符串。
- C语言小程序:判断你机器上的字节序
- C语言概述、数据类型、运算表达式、程序结构
- 由一个C语言递归判断回文数的程序产生的回忆
- 从一个程序的Bug解析C语言的类型转换
- C语言小程序(三)、判断两个日期之差
- 用C语言编写程序,判断输入的一个字符串是否是回数
- C语言-根据输入的三角形的三条边判断三角形的类型,并输出它的面积和类型
- C语言的编译器类型的判断(34)
- 判断用户终端类型(php程序)