版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
OJ地址:https://vjudge.net/problem/HDU-2001
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
Input
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
Output
对于每组输入数据,输出一行,结果保留两位小数。
Sample Input
0 0 0 1
0 1 1 0
Sample Output
1.00
1.41
程序代码:
运行正确,代码提交报错:
结构体:
#include<cstdio>
#include<cmath>
struct lcc{
int x;
int y;
}a,b;
int main(){
while(scanf("%d%d%d%d",&a.x,&a.y,&b.x,&b.y)!=EOF){
double dis = sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
printf("%.2f\n",dis);
}
return 0;
}
数组:
#include<cstdio>
#include<cmath>
int main(){
int a[4];
while(scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3])!=EOF){
double dis = sqrt(pow(a[0]-a[2],2)+pow(a[1]-a[3],2));
printf("%.2f\n",dis);
}
return 0;
}
正确:
结构体:
#include<cstdio>
#include<cmath>
struct lcc{
double x;
double y;
}a,b;
int main(){
while(scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y)!=EOF){
double dis = sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2));
printf("%.2f\n",dis);
}
return 0;
}
数组:
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
double a[4];
while(cin>>a[0]>>a[1]>>a[2]>>a[3]){
double dis = sqrt((a[0]-a[2])*(a[0]-a[2])+(a[1]-a[3])*(a[1]-a[3]));
printf("%.2f\n",dis);
}
return 0;
}
注意:
在本题中,需要注意数据的类型,题中描述要求输入的数为实数,便不能使用整数类型,而应该使用范围更广的双精度浮点数(double),向下兼容整型。更多的数据类型请参考:C语言变量类型及其表示范围