黑马程序员技术交流社区

标题: 有关循环结构while的练习题 [打印本页]

作者: dio925_heima    时间: 2015-2-25 08:51
标题: 有关循环结构while的练习题
第二个while所用的变量 j ,如果我把它定义在第一个while之前,得到的结果就不符合提议,但是我觉得 j 的定义域只是变大了,不明白为什么会影响输出的结果。具体可以看我下面的代码和注释。

/*
题目:提示用户输入一个正整数n,如果n是5,就输出下列图形,其他n值以此类推
*
**
***
****
*****
*/
#include <stdio.h>

int main()
{
    int n = 0;
    while(n<=0)
    {
        printf("请输入一个正整数:\n");
        scanf("%d", &n);
    }

    int i = 0;
    int j = 0;    //为什么把j在这一行定义,得到的结果就是每行都输出1个* ? 为什么作用域大了反而不可以
    while(i<n)
    {
        i++;
     //   int j = 0; //如果在这一行定义j,输出的结果就符合题目要求。
        while(j<i)
        {
            printf("*");
            j++;
        }
        printf("\n");

    }
    return 0;
}
作者: dio925_heima    时间: 2015-2-25 12:15
有木有好心的同学帮忙解答一下啊。。。
作者: wawajiayou85    时间: 2015-2-25 12:31
因为int j = 0;在while(i<n)上面 的话 while循环过程中永远不会将j的值重新初始化为0,所以j的值永远都会比i小1,所以只会输出一个*

如果将j=0放在while循环里面,每次 while循环执行到printf("\n");的时候,如果while(j<i)的话,j会从0开始打印,j比i小几就会打印几个*
        
作者: dio925_heima    时间: 2015-2-25 12:36
wawajiayou85 发表于 2015-2-25 12:31
因为int j = 0;在while(i

多谢多谢!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2