题目描述
给出平面坐标上不在一条直线上三个点坐标 ( 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.题目分析
输入三角形的三个点的坐标,根据距离公式计算三边的长度,最后输出周长。
因为计算三边操作存在高耦合性,所以这里想到了实现函数,降低代码重复率。文章来源:https://www.toymoban.com/news/detail-647744.html
2.题目思路
值得注意的是,这里坐标数据定义需要统一使用double,使用整型的情况会丢失精度。
写一个计算两点之间的距离的函数,公式上面有。
输入三个点的坐标,计算两两之间的距离,得到三边的长,最后输出周长即可。文章来源地址https://www.toymoban.com/news/detail-647744.html
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;
}
到了这里,关于P5735 【深基7.例1】距离函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!