我有以下代码,其中包含距离'在此函数中使用未初始化。
这是一个代码,它接受来自笛卡尔平面的两个坐标,并使用它们之间的距离作为半径来查找圆的面积。这是代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Point {
int x, y;
};
double getDistance(struct Point a, struct Point b)
{
double distance;
distance = sqrt((a.x - b.x) * (a.x - b.x) + (a.y-b.y) *(a.y-b.y));
return distance;
}
int main()
{
float Area;
double distance;
struct Point a, b;
printf("Enter coordinate of point a: ");
scanf("%d %d", &a.x, &a.y);
printf("Enter coordinate of point b: ");
scanf("%d %d", &b.x, &b.y);
printf("Distance between a and b: %lf\n", getDistance(a, b));
Area= 3.14 * distance * distance;
printf("\nArea of Circle : %f", Area);
return 0;
}
答案 0 :(得分:3)
这是正确的:distance
内的变量getDistance
和distance
内的变量main
是两个不同的变量。
当你写这个
printf("Distance between a and b: %lf\n", getDistance(a, b));
<{1}}内的{p> distance
未设置。
您可以通过添加作业来修复它
main
实施说明:由于您需要距离平方,因此您可以通过定义函数distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
并使用它来避免取平方根。
答案 1 :(得分:1)
您应该仔细阅读编译器警告,因为它引用了distance
函数中的变量main
而不是getDistance
中的变量。
我想,你真正想做的是:
distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
然后,您可以在getDistance
函数中的任何位置使用main
的结果。 ;)
答案 2 :(得分:0)
您忘记分配distance
变量,尝试类似:
int main()
{
float Area;
double distance;
struct Point a, b;
printf("Enter coordinate of point a: ");
scanf("%d %d", &a.x, &a.y);
printf("Enter coordinate of point b: ");
scanf("%d %d", &b.x, &b.y);
distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
Area= 3.14 * distance * distance;
printf("\nArea of Circle : %f", Area);
return 0;
}