黑马程序员技术交流社区
标题:
有关循环结构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