这是我的代码:
#include <stdio.h>
#include <math.h>
int main(void)
{
double x, y, z;
double numerator;
double denominator;
printf("This program will solve (x^2+y^2)/(x/y)^3\n");
printf("Enter the value for x:\n");
scanf("%lf", x);
printf("Enter the value for y:\n");
scanf("%lf", y);
numerator = sqrt(x) + sqrt(y);
denominator = pow((x/y),3);
z = (numerator/denominator);
printf("The solution is: %f\n", z);
return(0);
}
任何人都可以给我一个(希望)快速指针来修复我的无限循环吗?
答案 0 :(得分:0)
您的功能中没有循环,因此我认为您对scanf()
的调用导致了错误:
您需要将引用传递给scanf()
,即使用scanf("%lf",&x)
代替scanf("%lf",x)
。
顺便说一下,根据您的功能定义,您应该使用pow(x,2)
而不是sqrt(x)
来返回平方根。
答案 1 :(得分:0)
因为这是你的第一个问题
**Welcome to stack overflow**
您的代码没有进入无限循环,存在运行时错误。 您的scanf代码有缺陷使用此:
scanf("%lf",&x);
scanf("%lf",&y);
你希望scanf修改你的值的地址字段中包含的值。请阅读教程。
也可以使用
numerator=pow(x,2) + pow(y,2);//numerator=x^2+y^2
答案 2 :(得分:0)
它不是无限循环,你的代码只返回无穷大。这是因为scanf()需要一个指向变量的指针,它应该放置读取的数字。要获取变量的地址,您可以使用&
运算符,如下所示:
scanf("%lf", &x);
scanf("%lf", &y);