问个超级简单的C语言问题???

来源:百度知道 编辑:UC知道 时间:2024/09/20 07:23:24
虽然简单,但是我可能想糊涂了.....思维混乱!
for(i=1;i<=5;i++)
{ for(j=1;j<=i;j++)
putchar('*')
putchar('\n');
}
问题是:为什么哪个putchar('*')里面的*与j相关呢?
j=1.它就输出1个*
j=2,它就输出2个*
j=3,它就输出3个*
按照我的理解不管j怎么变化,我putchar就执行一次,输出一个*
如果要按照那样,除非j和*是等价关系才对呀

小弟初二啊,刚学 新手 大家帮下忙咯

另外哪个j<=i我看不顺眼,我改成j<=5结果不是一样吗??????

是不是我for循环还没理解意思啊

这是一个很简单的双for的循环,
i=1,j=1 输出一个*

i=2,j=1,2(j=1的时候输出一个*,j=2的时候输出一个*,所以一共两个)
(以下的依次类推)
i=3,j=1,2,3
i=4,j=1,2,3,4
i=5,j=1,2,3,4,5

仔细耐心点一个一个写出来,很简单的啦!
如果是改成j<=5,结果不会一样,这样是一个简单的for循环了,而不是FOR循环的嵌套了,作用不一样,你可以在程序上运行试一试
我希望我说得比较清楚了,楼主应该看看书罗~

是因为putchar属于for(j=1;j<=i;j++)这个循环里的,putchar('*')依次按j=1,j=2...一直到j=i,共执行i次。for(表达式a;表达式b;表达式c)的含义是进入for循环之前执行表达式a,通常是赋值操作,然后判断表达式b是否为真,如果是真则进入循环体里操作,结束后执行表达式c,之后再判断表达式b,什么时候b为假了,整个循环操作才结束。
for循环的两种形式是:
1.
for(表达式a;表达式b;表达式c)
表达式d;
以上的含义是for的循环体之后表达式d;
2.
for(表达式a;表达式b;表达式c)
{
表达式d;
表达式e;
...
表达式x;
}
循环体为大括号里所有的内容。
你一定是想要这种结果吧:
*
**
***
****
*****
这样来说j<=5是不行的,因为外层循环里i的取值直接影响到内层循环的次数,i=1,循环只走一遍,i=2就是两遍,这样才会出现三角形图案,如果是j<=5就是如下图形:
*****
*****
*****
*****
*****
试着比较一下。