[英]Can someone please explain how the output was obtained for this function?
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
>=
符號可能讓您感到困惑。 代碼在第一行中輸出X
5次而不是4次(如果這是你的意思)是因為一旦j = 0
,循環再次繼續。
基本上, while
循環結束后j
的值為-1
。 將它替換為最后一個printf
,剩下的輸出是有意義的。
如果將>=
更改為>
,則代碼將生成正確的輸出。
為什么第一行打印5“X”? 為什么第一個數字是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
好吧,j設置為i
,所以由於>= 0
檢查,它打印X
j+1
次。 然后將i
除以j
,現在為-1 + 2.現在是1,得到i
,它在換行開始之前打印到屏幕上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.