重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
目前创新互联建站已为1000+的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、绛县网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
#includelt;stdio.hgt;
#includelt;math.hgt;
void main()
{
float x1,x2,y1,y2;
printf("请输入一组数据:");
while(~scanf("%f%f%f%f",x1,y1,x2,y2))//开始读取输入的数,知道文件结束。
{
printf("两点间的距离为:%.2f\n",sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
printf("请输入一组数据:");
}
}
扩展资料:
c语言基本运算
一:算术运算符
算术运算符非常地简单,就是小学数学里面的一些加减乘除操作。不过呢,还是有一些语法细节需要注意的。
一、加法运算符+
int a=10;
(此处空一行)
int b=a+5;
在第3行利用加法运算符+进行了加法运算,再将和赋值给了变量b,最终变量b的值是15
二、减法运算符或负值运算符-
int b=10-5;
(此处空一行)
int a=-10;
1、在第1行利用减法运算符-进行了减法运算,再将差赋值给了变量b,最终变量b的值是5
2、在第3行中,这个-并不是什么减法运算符,而算是一个负值运算符,-10代表的是负十
三、乘法运算符*
int b=10*5;
注意:乘法运算符并不是x或者X,而是星号*。变量b最终的值是50。
四、除法运算符/
double a=10.0/4;
double b=10/4;
(此处空一行)
printf("a=%f,b=%f\n",a,b);
注意:除法运算符并不是÷,而是一个正斜杠/
#include stdio.h
#include math.h
struct Point
{
double x, y;
};
/** Calculate the distance of two points. */
double distance(const struct Point *a, const struct Point *b)
{
return sqrt((a-x-b-x)*(a-x-b-x)+(a-y-b-y)*(a-y-b-y));
}
int main()
{
struct Point a, b;
printf("Please input the first point: ");
scanf("%lf%lf", a.x, a.y);
printf("Please input the second point: ");
scanf("%lf%lf", b.x, b.y);
printf("The distance of the two point is %f.\n", distance(a, b));
return 0;
}
说明:
1、distance() 函数的两个参数 const struct Point *a 和 b 使用了 const 修饰,是表示 a 和 b 在函数执行过程中不会被修改;这样即使函数体内部写错,修改了 a 和 b 的值,编译也不会通过。
2、对 double,scanf 用 %lf,printf 用 %f。
以上。
额,貌似你就没什么对的地方。首先,在main函数中,int xyz(int l),这个不能这样写啊。声明也不是在主函数中声明啊。第二,这个int l?你确定是int型的?x1,x2,y1,y2都可以是int 型的,唯独l不可以,你查下sqrt()的返回值,是float型的。第三,x1,x2,y1,y2在哪里赋值了?没地方赋值怎么计算啊,你的xyz的原型应该写成 float(int x1,int x2,int y1,int y2),这样才能传值。第四,int i是形参,不能做返回值的,这涉及到内存模型问题
改下flength函数:
float flength(int x1,int y1,int x2,int y2)
{
float length;
length=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
return length;
}
你这个题的数据量很小(n10),所以完全可以暴力求解
#include stdio.h
#include math.h
typedef struct point
{
double x, y, z;
}Point;
double GetDistance(const Point *a, const Point *b)
{
return sqrt( (a-x-b-x)*(a-x-b-x)+
(a-y-b-y)*(a-y-b-y)+
(a-z-b-z)*(a-z-b-z) );
}
int main()
{
int i, j, n;
Point p[10];
double res = 0, distance = 0;
scanf("%d", n);
for(i = 0; i n; i++)
scanf("%lf %lf %lf", p[i].x, p[i].y, p[i].z);
for(i = 0; i n-1; i++)
{
for(j = i+1; j n; j++)
{
distance = GetDistance(p[i], p[j]);
res = distanceres ? distance:res;
}
}
printf("%.2lf\n", res);
return 0;
}
long
distance(point
a,
point
b)
{
long
d
=
0;
d
=
(long)sqrt((a.x-b.x)*(a.x-b.x)
+
(a.y-b.y)*(a.y-b.y));
return
d;
}
这个函数接受两个point类型的参数a和b,返回a和b之间类型是long的距离d。