繁体   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