2012-03-11 40 views
0
int main(int i, int j) { 
for (i=4; i>0; i--) { 
    j=i;  
    while (j>=0) { 
     printf("X"); 
     j--; 
     } 
    printf("%lf\n", (1.0*(i))/(j+2)); 
    } 
} 

輸出:有人可以解釋如何獲得這個功能的輸出?

XXXXX 4.0 
XXXX 3.0 
XXX 2.0 
XX 1.0 
+0

哪一部分你不明白嗎? – Blender 2012-03-11 04:21:01

+0

爲什麼第一行打印5「X's」?爲什麼是第一個數字4.0? – 2012-03-11 04:22:43

+0

也許它會打印5個「X」,因爲while(j> = 0)循環以j設置爲4開始,並在j == -1時結束。 – 2012-03-11 04:25:24

回答

0

好,j被設置爲i,所以它打印由於>= 0檢查Xj+1倍。然後將i除以j,現在爲-1 + 2.現在是1,得到i,它在換行符開始之前打印到屏幕上。

+0

好的,但是爲什麼第一行打印5」X's「?爲什麼是第一個數字4.0? – 2012-03-11 04:24:11

+0

打印5個X,因爲4,3,2,1,0是五個數字。打印出4,因爲i = 4並被除以j,即-1,加上2爲1. – macduff 2012-03-11 04:31:16

1

>=標誌可能令您困惑。代碼在第一行打印出X 5次而不是4次(如果這就是你的意思)是因爲一旦j = 0,循環再次繼續。

基本上,while循環結束後的值j-1。將其替換爲最後的printf,其餘輸出是合理的。

如果將>=更改爲>,代碼將生成正確的輸出。

+0

謝謝,但4.0值如何獲得? – 2012-03-11 04:27:58

+0

由於在循環結束時'j = -1',所以'(1.0 *(i))/(j + 2)= i /(-1 + 2)= i'。 – Blender 2012-03-11 04:29:13

1

爲什麼第一行打印5「X's」? &爲什麼是第一個數字4.0?

因爲,

j取J = 4,3,2,1,0的值。每次打印X因此5X。

之後,循環j變成-1。

現在1.0*(4) /(-1+2) =>(4.0/1) =>4.0

因此輸出XXXXX 4.0

+0

謝謝,幫了很多! – 2012-03-11 04:29:29

相關問題