c语言 长方形

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:44:59
各位大侠请帮助讲解一下
今天我们有一个作业,是要求用“*”打印出一个长于宽各5的正方形出来
我写的代码如下
#include <stdio.h>
void main()
{
int i=0;
int j=0;
for (i=1;i<6;i++)
{
for (j=1;j<6;j++)
printf(" *");
printf(" *\n");
}
}
运行的结果是
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
结果已经出来了,我对于这个还是稍微能看懂一点,但是我又突发奇想,讲程序稍微改了一点点,如下;
#include <stdio.h>
void main()
{
int i=0;
int j=0;
for (i=1;i<6;i++)
{
for (j=i;j<6;j++)
printf(" *");
printf(" *\n");
}
}
结果运行结果如下:
* * * * *
* * * *
* * *
* *
我想问一下,这为什么会这样(我对程序的解读能力还是有一点问题,因为我们才学C语言没多久);谢谢大侠们解读、帮助!

你改之后,第二个循环,也就是for (j=i;j<6;j++)这个循环,j=i是第一次循环。
当i通过外循环不断增大的时候,内循环的次数实际上在减少。每次减少一。

for (j=i;j<6;j++)printf(" *");这个循环的意思就是
1.令j=i,如果j<6,执行printf(" *")一次,然后j++,如果j++后还<6,则再次进行printf(" *")语句一次,然后一直循环,直到j++后<6,不再执行语句,跳出循环,开始执行printf(" *\n");语句。
这个是内循环,实现的操作是输出一行*,然后换一行。
for (i=1;i<6;i++)以及以后的大括号是外循环,原理和内循环一样。在这个循环里i实际上代表第i行。
在循环的过程中,i值是随输出行数在改变的。第一行的时候i是1.第二行的时候i是2。。。以此类推。所以当i在改变的时候,每一行的起始值j也在改变(因为你设定的是j=i),而终止值都是j=5(因为循环结束条件是j<6)。
所以,在每一行里内循环的次数是不一样的。因此,每一行输出的*的个数也不一样。

i控制行数,j控制每行输出的*的个数。

当i=2时,那么j执行的从2到5,
当i=3时,那么j执行的从3到5,
......
以此类推;

没看出有什么区别