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