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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章