2015-09-27 98 views
-3

這裏是我的代碼:基本功能生產無限循環

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

} 

誰能給我一個(希望)快速指針來解決我的無限循環?

+1

你應該通過'的scanf(「%LF」的變量中讀取,&x);'scanf函數會修改程序中的變量的值,因此你總是需要在你的函數中傳遞一個變量的引用 –

+1

'sqrt(x)'返回平方根,不是平方的,使用'pow(x,2)'。 –

+6

代碼中沒有無限循環if處理*輸入*時遇到問題,就這麼說... –

回答

0

有在你的函數沒有循環,所以我認爲這是scanf()您的通話是導致該錯誤:

您需要通過參考scanf(),即使用scanf("%lf",&x)代替scanf("%lf",x)

順便說一句,根據你的功能定義,你應該使用pow(x,2)而不是sqrt(x)它返回平方根。

0

因爲這是你的第一個問題

**Welcome to stack overflow** 

您的代碼犯規進入一個無限循環,有一個運行時錯誤。 你scanf函數的代碼是有缺陷的利用這樣的:

scanf("%lf",&x); 
scanf("%lf",&y); 

你想scanf的修改包含在你的value.Please的地址字段中的值讀教程。

還可以使用

numerator=pow(x,2) + pow(y,2);//numerator=x^2+y^2 
0

它不是無限循環,你的代碼只是返回無窮。這是因爲scanf()需要一個指向變量的指針,它應該放置讀取數字。要獲取變量的地址,你可以使用&操作是這樣的:

scanf("%lf", &x); 
scanf("%lf", &y);