基本函数产生无限循环

时间:2015-09-27 18:27:19

标签: c loops infinite

这是我的代码:

#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);

}

任何人都可以给我一个(希望)快速指针来修复我的无限循环吗?

3 个答案:

答案 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);