-3

这个输入如何导致输出**4 *2?我不明白。

int i, j;
for (i = 2; i > 0; i--)
{
    for (j = 0; j < i; j++)
        printf("*");
    printf("%d ", i+j);
}
4

3 回答 3

1

的值i首次为 2。所以,

for (j = 0; j < i; j++)
    printf(“*”);

打印 2*秒。当 j 变为 2 循环中断和

printf(“%d “, i+j);

打印4

对于 的下一次迭代for (i = 2; i > 0; i--)i现在是 1

for (j = 0; j < i; j++)
    printf(“*”);

打印 1 *。当 j 变为 1 时,循环中断并且

printf(“%d “, i+j);

打印2

因此**4*2。并且请为您编写的琐碎程序缩进您的代码,否则您会一直感到困惑。

于 2013-10-25T23:26:57.067 回答
1
  1. i=2j=0
    while j <2=>> 2 次 * 通过 printf(“*”);
    j=2(因为j++(2次))

  2. printf(“%d “, i+j);2+2
    那么此时的输出是**4

  3. i=1and j=0(restart j)
    while j<1=>> 1 time * by printf(“*”);
    j=1(因为j++(1次))

  4. printf(“%d “, i+j);1+1
    那么此时的输出是**4 *2

于 2013-10-25T23:29:50.900 回答
1

为清楚起见,修改了代码:

int i, j;

    for (i = 2; i > 0; i--)
    {
                for (j = 0; j < i; j++){
                    printf("*");
                }
                printf(“"%d ", i+j);
    }

1.for通过设置 i=2 开始

2.内循环通过设置j=0开始

3.打印*

输出: *

4.递增 j ( j=1 )

5.打印*

输出: **

6.递增 j ( j=2 )

7.内部for循环完成

  1. 打印 (i+j =4)

输出:**4

  1. 减量 i。现在我 = 1

  2. 内循环通过设置 j=0 开始

  3. 打印*

输出:**4 *

  1. 增量 j ( j=1 )

内循环完成

  1. 打印 ( i+j ) = 2

输出:**4 *2

  1. 递减 i (现在 i= 0 )

外循环动作

最终输出 = **4 *2

于 2013-10-25T23:31:05.857 回答