HDU 2001 计算两点间的距离
Problem Description
输入两点坐标(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.41AC代码:#include<stdio.h>#include<math.h>int main(){ float a,b,c,d;while(scanf("%f %f %f %f",&a,&b,&c,&d)!=EOF)printf("%.2f\n",sqrt((a-c)*(a-c)+(b-d)*(b-d)));return 0;}总结1:学会利用数学函数,例如本题中用到的“sqrt”,即为数学中的开根号函数,若 m=double sqrt(double x);则这个m需定义为double型,若想取整数,可进行强制装换数据类型,即写成(int)m。(本题不需要,只需保证其double型即可);总结2:数据类型的区分,和不同类型数据在输入输出时,格式的区分。一、整形数据int 基本整型,VC环境下,占4个字节,取值范围 (-214483648~2147483647) 即(-21亿~21亿);输入格式scanf("%d",&n);输出格式printf("%d",n);long long 双长型,占8个字节,取值范围(-9223372036854775808~92233772036854775807)即(-2的63次方~2的63次方-1);输入格式scanf("%lld",&n);输出格式printf(“%lld”,n);二、浮点型数据float 单精度浮点型,占4个字节,有效数字6位, 数值范围(绝对值) (0以及1.2*10的-38次方~3.4*10的38次方)输入格式scanf("%f",&n);输出格式printf(“%f”,n);double 双精度浮点型,占8个字节,有效数字15位, 数值范围(绝对值) (0以及2.3*10的-308次方~1.7*10的308次方)输入格式scanf("%lf",&n);输出格式printf(“%lf”,n);注: 1、浮点型数据一般用double型,而不用float型;2、double型在默认情况下,输出小数点后6位,我们通常要减小其小数点后的长度,则可以使用(“%m.nlf”,&a)的形式,其中m,n都为正整数,m表示输出的浮点型的数据占m位,如果实际长度不等于m,则按实际长度输出,n表示输出的小数点位数。SO,m实际上可以不用管,直接用0代替或者不写都可以!3、在VC中C语言不支持long long int类型,而在Linux下支持。long long int也占有8个字节。
::.--.-.:: :( ( )::::: 东边日出西边雨 (_, \ ) ,_):: 道是无晴却有情 | :::-'--`--:::::::: ~~| , \ _ / ::::::::::::::::::: ,|`-._/| -== (_) ==- ::::::::^^::::::::.' | /||\ / \ ::::::^^::::::::.' | ./ ||`\ | :::::::::::::::/ `-. |/._ || \ ::::::::::::::| || || \ ~~=~_~^~ =~ \~~~~~~~'~~~~'~~~~/~~`` ~=~^~ ~^^~~-=~^~ ^ `--------------'~^~=~^~_~^=~^~