问题描述
- c语言求距离为什么回车之后没有结果
-
#include "stdio.h"int main()
{
int x1,y1,x2,y2;
float d;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
while( scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF)
{
d=(float)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2f",d);
}
return 0;
}
解决方案
你的循环写错了把。直接死循环不就行了。判断的什么?
解决方案二:
输入一组数据 比如 1 2 3 4 回车没结果, 再输入一组数据 比如 2 3 4 5 回车就会有结果,继续输入数据 回车 有结果。
所以就是说 第一组数据 没有结果,后面每组数据都会有结果
解决方案三:
如果你想循环 可以这样。
#include "stdio.h"
int main()
{
int x1,y1,x2,y2;
float d;
while(1)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
d=(float)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2f",d);
}
return 0;
}
如果你想输入一次可以这样
#include "stdio.h"
int main()
{
int x1,y1,x2,y2;
float d;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
d=(float)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2f",d);
return 0;
}
程序中最好加个输入提示。增加友好性。
解决方案四:
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
while( scanf("%d%d%d%d",&x1,&y1,&x2,&y2)!=EOF)
第一句时候,你输入数据了,但是没有这组数据做任何操作,while循环中,会需要你重新再输入一组数据,然后才会去做
d=(float)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))这个操作。
去掉while循环前的scanf("%d%d%d%d",&x1,&y1,&x2,&y2);语句吧。
解决方案五:
int ret = scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
while(ret != EOF)
{
d=(float)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%.2f",d);
ret = scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
}
解决方案六:
你这个第一个输入是没有结果的,第二个输入才会有结果