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
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
好,j被設置爲i
,所以它打印由於>= 0
檢查X
j+1
倍。然後將i
除以j
,現在爲-1 + 2.現在是1,得到i
,它在換行符開始之前打印到屏幕上。
好的,但是爲什麼第一行打印5」X's「?爲什麼是第一個數字4.0? – 2012-03-11 04:24:11
打印5個X,因爲4,3,2,1,0是五個數字。打印出4,因爲i = 4並被除以j,即-1,加上2爲1. – macduff 2012-03-11 04:31:16
>=
標誌可能令您困惑。代碼在第一行打印出X
5次而不是4次(如果這就是你的意思)是因爲一旦j = 0
,循環再次繼續。
基本上,while
循環結束後的值j
是-1
。將其替換爲最後的printf
,其餘輸出是合理的。
如果將>=
更改爲>
,代碼將生成正確的輸出。
謝謝,但4.0值如何獲得? – 2012-03-11 04:27:58
由於在循環結束時'j = -1',所以'(1.0 *(i))/(j + 2)= i /(-1 + 2)= i'。 – Blender 2012-03-11 04:29:13
爲什麼第一行打印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
謝謝,幫了很多! – 2012-03-11 04:29:29
哪一部分你不明白嗎? – Blender 2012-03-11 04:21:01
爲什麼第一行打印5「X's」?爲什麼是第一個數字4.0? – 2012-03-11 04:22:43
也許它會打印5個「X」,因爲while(j> = 0)循環以j設置爲4開始,並在j == -1時結束。 – 2012-03-11 04:25:24