簡體   English   中英

有人可以解釋一下如何獲得此功能的輸出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM