A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dio925_heima 中级黑马   /  2015-2-25 08:51  /  1651 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第二个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;
}

3 个回复

倒序浏览
有木有好心的同学帮忙解答一下啊。。。
回复 使用道具 举报
因为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小几就会打印几个*
        
回复 使用道具 举报
wawajiayou85 发表于 2015-2-25 12:31
因为int j = 0;在while(i

多谢多谢!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马