C语言判断三条边能否构成三角形

算法基础:
两边之和大于第三边,并且两边之差小于第三边时可构成三角形。

/*----------------------------------
功能:判断三条边能否构成一个三角形
输入示例:
2
3.1 4 5
1 2 3
输出示例:
Yes
No
-----------------------------------
Author: Zhang Kaizhou
Date: 2019-3-17 13:03:17
----------------------------------*/
#include 
#include 
#include 

typedef struct node{
    float a, b, c;
    int res;
    struct node * pnext;
} Node;

void judge_triangle(Node * p);
void list_tail_insert(Node ** pphead, Node ** pptail, Node * p);
void list_print(Node * phead);

int main(){
    Node * phead = NULL, * ptail = NULL;
    int n, i;
    scanf("%d", &n);
    for(i = 0; i < n; i++){
        Node * pnew = (Node *)calloc(1, sizeof(Node));
        scanf("%f %f %f", &pnew->a, &pnew->b, &pnew->c);
        judge_triangle(pnew);
        list_tail_insert(&phead, &ptail, pnew);
    }
    list_print(phead);

    return 0;
}

void judge_triangle(Node * p){
    if(p->a + p->b > p->c && p->a + p->c > p->b && p->b + p->c > p->a &&
       fabs(p->a - p->b) < p->c && fabs(p->a - p->c) < p->b && fabs(p->b - p->c) < p->a){
        p->res = 1;
    }else{
        p->res = 0;
    }
    return;
}

void list_tail_insert(Node ** pphead, Node ** pptail, Node * p){
    if(* pphead == NULL){
        * pphead = p;
        * pptail = p;
    }else{
        (* pptail)->pnext = p;
        * pptail = p;
    }
    return;
}

void list_print(Node * phead){
    while(phead != NULL){
        if(phead->res == 1){
            printf("Yes\n");
        }else{
            printf("No\n");
        }
        phead = phead->pnext;
    }
    return;
}

你可能感兴趣的:(C语言编程)