在线设计软件网站aso关键词搜索优化
题目描述
给出平面坐标上不在一条直线上三个点坐标 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) (x_1,y_1),(x_2,y_2),(x_3,y_3) (x1,y1),(x2,y2),(x3,y3),坐标值是实数,且绝对值不超过 100.00,求围成的三角形周长。保留两位小数。
对于平面上的两个点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2),则这两个点之间的距离 d i s = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 dis=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} dis=(x2−x1)2+(y2−y1)2
输入格式
输入三行,第 i i i 行表示坐标 ( x i , y i ) (x_i,y_i) (xi,yi),以一个空格隔开。
输出格式
输出一个两位小数,表示由这三个坐标围成的三角形的周长。
样例 #1
样例输入 #1
0 0
0 3
4 0
样例输出 #1
12.00
提示
数据保证,坐标均为实数且绝对值不超过 100 100 100,小数点后最多仅有 3 3 3 位。
1.题目分析
输入三角形的三个点的坐标,根据距离公式计算三边的长度,最后输出周长。
因为计算三边操作存在高耦合性,所以这里想到了实现函数,降低代码重复率。
2.题目思路
值得注意的是,这里坐标数据定义需要统一使用double,使用整型的情况会丢失精度。
写一个计算两点之间的距离的函数,公式上面有。
输入三个点的坐标,计算两两之间的距离,得到三边的长,最后输出周长即可。
3.代码实现
#include <stdio.h>
#include <math.h>
//计算两点之间的距离的函数
double dis(double x1, double y1, double x2, double y2) {return sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
}int main() {//这里使用double的原因是因为题目要求的数据精度问题double x1, y1;double x2, y2;double x3, y3;//输入三个点的坐标scanf("%lf %lf", &x1, &y1);scanf("%lf %lf", &x2, &y2);scanf("%lf %lf", &x3, &y3);double a, b, c;//调用函数计算三边a = dis(x1, y1, x2, y2);b = dis(x1, y1, x3, y3);c = dis(x3, y3, x2, y2);//计算周长printf("%.2lf", a + b + c);return 0;
}