注册 登录
编程论坛 C语言论坛

计算线段的长度

温柔 发布于 2019-10-28 21:35, 5229 次点击
【题目描述】
已知线段的两个端点的坐标A(Xa,Ya),B(Xb,Yb),求线段AB的长度,保留到小数点后3位。

【输入】
第一行是两个实数Xa,Ya,即A的坐标。

第二行是两个实数Xb,Yb,即B的坐标。

输入中所有实数的绝对值均不超过10000。

【输出】
一个实数,即线段AB的长度,保留到小数点后3位。

【输入样例】
1 1
2 2
【输出样例】
1.414
3 回复
#2
纯蓝之刃2019-10-28 21:47
程序代码:
#include <stdio.h>
#include <math.h>
int main()
{
    double a1,b1,a2,b2,y;
    scanf("%lf %lf",&a1,&b1);
    scanf("%lf %lf",&a2,&b2);
    y=sqrt(pow(a2-a1,2)+pow(b2-b1,2));
    printf("%.3lf",y);
    return 0;
}
#3
自学的数学2019-10-31 16:01
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
int xa,ya;
int xb,yb;
printf("输入A的坐标");
scanf("%d%d",&xa,&ya);
printf("输入B的坐标");
scanf("%d%d",&xb,&yb);
double len;
len=sqrt((xa-xb)*(xa-xb)+(ya-yb)*(ya-yb));
printf("\n%.3f\n",len);
return 0;
}
#4
Mr_doge2019-11-02 08:39
二楼的代码虽然看着有点吃力,但是是正确的
三楼的代码,建议三楼自己编译测试下
1、输入为实数,也即是说,不排除输入小数的可能性,虽然接收输入不要求涵盖实数集,但是应当保证小数和整数都能输入
2、printf()里的%0.3f参数针对的是float变量的打印输出,对于double变量,应使用如二楼那般的%0.3lf参数,否则会因为变量类型错误而输出0
3、短的代码没看出来,但是当代码达到上百行以上时,完全没有缩进格式的代码,其阅读难道会大幅增加,建议注意格式

不论美观与否,效率快慢,程序首先需要保证的是其正确性,其次再考虑别的

最后吐槽一下
int main()
{}
是C++的主函数写法
int main(void)
{}
int main(int arc,char *arg[])
{}
才是C仅有的两种标准写法
虽然因为编译器向前兼容以及编译器兼容C++,不会对C++写法报错,但是还是区分开来比较好
1