有人可以解释一下如何获得此功能的输出?

时间:2012-03-11 04:15:13

标签: c

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  

3 个答案:

答案 0 :(得分:1)

>=标志可能让您感到困惑。代码在第一行打印出X 5次而不是4次(如果这是你的意思)是因为一旦j = 0,循环再次继续。

基本上,j循环结束后while的值为-1。将它替换为你的最后一个printf,输出的其余部分是有道理的。

如果您将>=更改为>,代码将生成正确的输出。

答案 1 :(得分:1)

为什么第一行打印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

答案 2 :(得分:0)

嗯,j设置为i,因此X检查会打印j+1 >= 0次。然后将i除以j,现在为-1 + 2.现在为1,得到i,然后在换行开始前将其打印到屏幕上。