这是我的代码,用于查找两点之间的距离。我的作业要求必须使用函数,因此需要单独使用一个函数来查找距离。执行代码时,我没有遇到任何语法错误,但只出现闪烁的光标。我是 C 语言的初学者。
我的代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
float distance(float *x1, float *y1, float *x2, float *y2);
int main()
{ printf("Input coordinates as x1,y1,x2,y2:\n");
float x1,y1,x2,y2;
scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);
printf("Coordinates are : (%f,%f) and (%f,%f)\n",x1,y1,x2,y2);
printf("%f",distance (&x1,&y1,&x2,&y2));
return 0;
}
float distance(float *x1, float *y1, float *x2, float *y2)
{
float d= sqrt(pow((*x1-*x2),2)+pow((*y1-*y2),2));
printf("%f", d);
return d;
}
编译时:gcc -o 1 1.c -lm 输出:
Input coordinates as x1,y1,x2,y2:
1 2 3 4
就是这样。光标一直闪烁,没有提供任何输出。
另外,我尝试在各个点输入打印语句。之后的任何打印均scanf
不起作用。
答案1
你问的问题不是 Ubuntu 特有的,而是 C 编程特有的。我建议你问这样的问题堆栈溢出——这对您自己也有好处,因为您会接触到不同的受众。
无论如何,您应该了解 scanf () 函数,因为它会尝试匹配您在键盘上输入的内容。这包括格式化字符串中的任何空格、换行符等。然后,您还需要使用“回车键”结束标准输入。
对于您的问题,请更改:
scanf("%f %f %f %f ",&x1,&y1,&x2,&y2);
到:
scanf("%f %f %f %f",&x1,&y1,&x2,&y2);
(删除格式字符串末尾的空格。)然后它应该可以按预期工作。
就我个人而言,我一直使用 scanf 一次读取一个值。如示例所示这里。我承认这只是我逃避你所看到的问题的方式。
答案2
两件事情:
gcc
用于编译,而不是运行代码。-o
flag 指定要创建的新文件的名称。由于您运行 gcc 并且没有错误,这意味着它将 C 代码编译成您用 flag 指定的1.c
文件。因此,您只需在终端中运行即可。1
-o
./1
请注意,使用数字作为可执行文件名称是一种不好的做法,也是不好的命名约定。请改用,并在终端中gcc -o distance -lm 1.c
运行./distance
还要注意,因为我们只给出了文件名,所以它会在当前工作目录中创建可执行文件。这就是为什么你需要./