C语言程序设计(第三版)何钦铭著 习题3-5
题目
三角形判断∶输入平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。
如果这3个点能构成一个三角形,输出周长和面积(保留2位小数);
否则,输出"Impossble"。试编写相应程序。
提示∶在一个三角形中,任意两边之和大于第三边。三角形面积计算公式如下∶
area=
其中s=(a+b+c)/2
分析过程
输入
条件:输入平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3)
输出
条件:如果这3个点能构成一个三角形,输出周长和面积(保留2位小数);否则,输出"Impossble"
代码
#include <stdio.h>
#include <math.h>
int main () {
/*定义变量*/
double x1, y1, x2, y2, x3, y3; /*定义变量,存储输入的三个点的坐标(x1,y1)、(x2,y2)、(x3,y3)*/
double a, b, c, s, perimeter, area; /*定义变量,计算结果边长a, b, c, s 以及周长和面积*/
/*赋值*/
printf("请输入三个点的坐标(x1,y1)、(x2,y2)、(x3,y3):\n"); /*输入提示*/
scanf("%lf %lf %lf %lf %lf %lf \n", &x1, &y1, &x2, &y2, &x3, &y3); /*输入并赋给变量*/
/*计算*/
a = sqrt((pow(fabs(x1-x2), 2) + pow(fabs(y1-y2), 2))); /*计算结果边长a*/
b = sqrt((pow(fabs(x2-x3), 2) + pow(fabs(y2-y3), 2))); /*计算结果边长b*/
c = sqrt((pow(fabs(x1-x3), 2) + pow(fabs(y1-y3), 2))); /*计算结果边长c*/
if(a+b>c && a+c>b && b+c>a) {
/*符合任意两边之和大于第三边,则可构成三角形*/
s = (a+b+c)/2;
perimeter = a+b+c;
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("周长 = %0.2lf, 面积 = %0.2lf", perimeter, area);
} else
printf("Impossble"); /*不能构成三角形*/
return 0;
}