zoukankan      html  css  js  c++  java
  • 浅析三角形測试程序

    编程输入三角形的三条边,推断它们是否能构成三角形。若能够构成三角形,指出是何种三角形:等腰三角形。直角三角形,还是一般三角形?

    C语言实现例如以下:

    #include<stdio.h>
    #include<math.h>
    #define EPS 1e-7
    int main(){
    float a, b, c;
    int flag = 1;
    printf("Input a, b, c: ");
    scanf("%f,%f,%f",&a,&b,&c);


    if(a+b>c && b+c>a && a+c>b){
    /* 先推断是否为等边三角形再推断是否为等腰三角形: 等边三角形一定是等腰三角形,但反之不一定。 */
    if(fabs(a-b)<=EPS && fabs(b-c)<=EPS && fabs(c-a)<=EPS){
    printf("等边");
    flag = 0; //标志位置零
    }
    else if(fabs(a-b)<=EPS || fabs(b-c)<=EPS || fabs(c-a)<=EPS){
    printf("等腰");
    flag = 0; //标志位置零
    }
    if(fabs(a*a+b*b-c*c)<=EPS || fabs(a*a+c*c-b*b)<=EPS || fabs(c*c+b*b-a*a)<=EPS){
    printf("直角");
    flag = 0;
    }
    if(flag){
    printf("一般");
    }
    printf("三角形");
    }
    else{
    printf("不是三角形 ");
    }
    }

    从这个样例中,我们看到因为等腰三角形好,直角三角形不是非此即彼的关系。而是存在交叉,集合的相交部分正是等腰直角三角形。

    因此不能够用if-else语句来依次推断是否是等腰三角形和直角三角形,应该用并列的if语句来推断。

    注意点1:一般地。仅仅有非此即彼的关系才採用if-else语句,而对于有交叉的关系,应使用两个并列的if语句,这一点是值得我们思考的地方。

    注意点2:内存中的浮点数所 表示的精度是有限的,所以比較实行变量与与0是否相等或者两个实型变量是否相等时,

    不能像整形变量与0比較那样直接用相等关系运算符与0比較,而应该推断实型变量的值是否位于0附近的一个非常小的区间内或者两个实型变量的差值

    是否足够小来进行实型变量的比較。

    程序虽小,奥妙无穷,与大家共勉!


  • 相关阅读:
    外部程序启动App
    简单修改文件名python脚本
    监听软键盘的显示
    ActionBar 笔记
    ActionBar 笔记
    Android Lock Pattern 图案解锁
    通过反射实现圆角ImageView
    android 通过命令行启动Apk
    ubuntu svn rabbitvcs 安装
    Android 两个界面间快速切换时,会发现有短暂黑屏
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6959075.html
Copyright © 2011-2022 走看看