【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:

在这里插入图片描述

发布了44 篇原创文章 · 获赞 68 · 访问量 5135

猜你喜欢

转载自blog.csdn.net/qq_25404477/article/details/100707924