与作用域如何影响嵌套 while 循环(在 C 编程中)相混淆

问题描述 投票:0回答:1

我只是 C 编程的初学者,我为以下 2 个代码块获得了 2 个不同的输出。

代码1**

#include <stdio.h>
int main(void)
{
    int i=0;
    while (i<5)
    {
        int j=1;
        while (j<=2*i+1)
        {
            printf("*");
            j++;
        }
        i++;
        printf("\n");
    }
}

代码2*

#include <stdio.h>
int main(void)
{
    int i=0;
    int j=1;

    while (i<5)
    {
        while (j<=2*i+1)
        {
            printf("*");
            j++;
        }
        i++;
        printf("\n");
    }
}

请问有人可以解释一下原因吗? 感谢您花时间阅读我的问题。我们将非常感谢您的帮助。

第一个代码块返回: * *** ***** ****** *********

第二个代码块返回: * ** ** ** **

c
1个回答
0
投票

在第一个程序中,变量

j
在外循环的每次迭代中都被初始化为
1

在第二个程序中,变量

j
仅在程序开始时初始化一次。

为了使两个程序等效,第二个程序应更改为:

#include <stdio.h>
int main(void)
{
    int i=0;
    int j=1;

    while (i<5)
    {
        j = 1;  // Change here, resetting the variable j
        while (j<=2*i+1)
        {
            printf("*");
            j++;
        }
        i++;
        printf("\n");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.