【C语言】判断三角形

本不想上传这个,为了保持CSDN勋章,希望理解。
没有技术含量,就是考一些逻辑,不喜勿喷。
输入三个数(支持浮点数据),判断是否是三角形以及类型,边长范围[1-200]。
注释完善,自行理解。

执行环境 Ubuntu18.04  GCC编译
注意链接math.h文件,完整命令如下:
#  gcc  filename.c  -lm 

Code:

/***********************************************************
根据用户输入三个边,甄选出是什么三角形.
声明:冒泡排序与交换函数完全可以省略,但是也可以便于后期利用a^2+b^2=c^2计算
以及math.h文件,权当练习简单排序,可以当做多此一举
***********************************************************/
#include <stdio.h>
#include <math.h>

//交换两个函数值
void swapValue(float *a, float *b) {
    float temp = *a;
    *a = *b;
    *b = temp;
}

//冒泡升序,便于后期计算
//单独写出该函数略显麻烦,可以不写,嵌于其他函数内部亦可
void bubbleSort(float *array, int len) {
    for (int i = 0; i < len - 1; ++i)
        for (int j = 0; j < len - 1 - i; ++j)
            if (array[j] > array[j + 1])
                swapValue(&array[j], &array[j + 1]);
}

//判断是什么三角形
void judgeTriangle(float *edges) {
    //判断是否有超范围值,有就直接return
    for (int i = 0; i < 3; ++i) {
        if (edges[i] > 200 || edges[i] < 1) {
            printf("Edges value error\n");
            return;
        }
    }

    //判断是否构成三角形条件
    if (edges[0] + edges[1] > edges[2]) {
        //构成等腰三角形条件
        if (edges[0] == edges[1] || edges[1] == edges[2] || edges[2] == edges[0]) {

            //直角等腰三角形
            if (pow(edges[0], 2) + pow(edges[1], 2) == pow(edges[2], 2)) {
                printf("Isosceles right triangle.\n");
            }
                //等边三角形
            else if (edges[0] == edges[1] && edges[1] == edges[2] && edges[2] == edges[0]) {
                printf("Regular triangle.\n");
            }
                //等腰三角形
            else {
                printf("Isosceles triangle.\n");
            }
        }
            //pow()平方,判断直角三角形
        else if (pow(edges[0], 2) + pow(edges[1], 2) == pow(edges[2], 2)) {
            printf("Right triangle.\n");
        } else {
            printf("Triangle.\n");
        }
    } else {
        printf("Not triangle.\n");
    }
}


int main(void) {
    //定义数组,存放输入数据
    float edges[3] = {0};

    printf("Input three edges:\n");

    for (int i = 0; i < 3; ++i)
        scanf("%f", &edges[i]);

    //sizeof(array)/sizeof(array[0]))计算出来的是数组长度,在此假设数组长度不明,可以记住这个公式
    bubbleSort(edges, sizeof(edges) / sizeof(edges[0]));

    //printf("%d,%d,%d\n", array[0], array[1], array[2]);
    judgeTriangle(edges);

    return 0;
}

Picture:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我姥爷是校长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值