这个代码在输出x1y1x2y2时没有值,怎么解决?#include <stdio.h> #include <math.h> float distljb(float a,float b,float c,float d); int main() { float a,b,c,d; printf("请输入两个坐标\n"); scanf("%f,%f,%f,%f",&a,&b,&c,&d); printf("Input(x1,y1);%.2f %.2f\n",a,b); printf("Input(x2,y2);%.2f %.2f\n",c,d); printf("两点坐标的距离为%.2f",distljb(a,b,c,d)); return 0; } float distljb(float a,float b,float c,float d)//abcd分别等于x1 y1 x2 y2 { float j; j=sqrt((a-c)*(a-c)+(b-d)*(b-d)); return j; }
时间: 2023-06-26 18:06:01 浏览: 107
你的代码中scanf的格式控制字符串应该是"%f,%f,%f,%f",而不是"%f,%f,%f%f",因为你输入的是四个浮点数,它们之间应该用逗号隔开,而不是空格。修改后的代码如下:
```
#include <stdio.h>
#include <math.h>
float distljb(float a,float b,float c,float d);
int main() {
float a,b,c,d;
printf("请输入两个坐标\n");
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
printf("Input(x1,y1);%.2f %.2f\n",a,b);
printf("Input(x2,y2);%.2f %.2f\n",c,d);
printf("两点坐标的距离为%.2f",distljb(a,b,c,d));
return 0;
}
float distljb(float a,float b,float c,float d)//abcd分别等于x1 y1 x2 y2
{
float j;
j=sqrt((a-c)*(a-c)+(b-d)*(b-d));
return j;
}
```
这样修改之后就可以正确输出两个坐标和它们之间的距离了。
相关问题
本题要求实现一个函数,对给定平面任意两点坐标(x 1 ,y 1 )和(x 2 ,y 2 ),求这两点之间的距离。 函数接口定义: double dist( double x1, double y1, double x2, double y2 ); 其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函数dist应返回两点间的距离。 裁判测试程序样例: #include <stdio.h> #include <math.h> double dist( double x1, double y1, double x2, double y2 ); int main() { double x1, y1, x2, y2; scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2); printf("dist = %.2f\n", dist(x1, y1, x2, y2)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 10 10 200 100
实现代码如下:
```
#include <stdio.h>
#include <math.h>
double dist(double x1, double y1, double x2, double y2) {
double dx = x2 - x1;
double dy = y2 - y1;
double distance = sqrt(dx * dx + dy * dy);
return distance;
}
int main() {
double x1, y1, x2, y2;
scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
printf("dist = %.2f\n", dist(x1, y1, x2, y2));
return 0;
}
```
在函数dist中,先计算出两点在x轴和y轴上的距离,然后根据勾股定理计算出两点之间的距离,最后返回距离值。在main函数中,读入四个double类型的变量,将它们作为参数传递给dist函数,并输出dist函数的返回值。
#include <stdio.h> #include <math.h> int main() { double a,b,c,d; double distljb(double a,double b,double c,double d); printf("请输入两个坐标\n"); scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d); printf("Input(x1,y1);%.2f %.2f\n",a,b); printf("Input(x2,y2);%.2f %.2f\n",c,d); printf("两点坐标的距离为%.2f",distljb(a,b,c,d)); return 0; } double distljb(double a,double b,double c,double d)//abcd分别等于x1 y1 x2 y2 { double j; j=sqrt((a-c)*(a-c)+(b-d)*(b-d)); return j; }这个程序的x1y1x2y2的值输入错误怎么解决?
如果输入的值不符合要求,程序会出现错误或者输出错误结果。为了避免这种情况发生,可以在输入时添加一些判断,例如判断输入是否为数字,判断输入的个数是否符合要求等。可以参考下面的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
double a,b,c,d;
double distljb(double a,double b,double c,double d);
printf("请输入两个坐标,格式为x1,y1,x2,y2\n");
if(scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d) != 4){ //判断输入的个数是否为4个
printf("输入格式错误!\n");
exit(1);
}
printf("Input(x1,y1);%.2f %.2f\n",a,b);
printf("Input(x2,y2);%.2f %.2f\n",c,d);
printf("两点坐标的距离为%.2f",distljb(a,b,c,d));
return 0;
}
double distljb(double a,double b,double c,double d) {
double j;
j=sqrt((a-c)*(a-c)+(b-d)*(b-d));
return j;
}
```
在上面的代码中,我们使用了`scanf`函数的返回值来判断输入的个数是否符合要求。如果`scanf`函数返回的值不为4,则说明输入格式错误,程序会输出提示信息并退出。
阅读全文