2014-02-18 51 views
0

爲了評估l1,l2,l3,l4直到k < = g,值K被設置爲依賴於i而增加。我究竟做錯了什麼????While循環,值k不會增加

#include <stdio.h> 
#include <math.h> 

int main(void) { 

    float c=0, h=0, x=0, i=0; 

    printf("Proj. #2 - Juan Perez\n"); 
    printf("Power of lamps (in watts)? "); 
    scanf("%f" , &c); 

    printf("Height of lamp (in meters)? "); 
    scanf("%f" , &h); 

    printf("Distance apart? (in meters)? "); 
    scanf("%f" , &x); 

    printf("Interval? (in meters)? "); 
    scanf("%f" , &i); 


    printf("Power: %f\n", c); 
    printf("Height: %f\n", h); 
    printf("Distance apart: %f\n", x); 
    printf("Interval: %f\n", i); 

    float k=75, d=0, e=x, f=2*x, g=3*x; 
    float l1=((c*h)/(powf((h*h)+((k-d)*(k-d)), 1.5))); 
    float l2=((c*h)/(powf((h*h)+((k-e)*(k-e)), 1.5))); 
    float l3=((c*h)/(powf((h*h)+((k-f)*(k-f)), 1.5))); 
    float l4=((c*h)/(powf((h*h)+((k-g)*(k-g)), 1.5))); 
    float j=l1+l2+l3+l4; 

    while (k<=g){ 
     printf("%f\n", j); 
     k+=i; 
    } 

} 
+0

你說「直到k <= g」,但你的代碼有「while k <= g」。我假設你的代碼在這裏是正確的,但你應該保持一致。 –

+0

顯示您的輸入。 – BLUEPIXY

回答

2

由於k = 75,和g = 0,因爲條件是不正確的,該循環將不會執行,並打印語句將無法正常工作,並且k的增量將永遠不會發生任何。

變化

while (k<=g){ 

while (k>=g){ 

要觀看它飛出控制(在無限循環運行)的,由於k永遠是大於g。

+0

FWIW,'g'在循環前設置爲'3 * x',但除非'x'大於25,否則相同的原則適用。 –

+0

g是x輸入的3倍。我打算從0開始改變k。 – user3321419