C语言编程请教大家...

来源:百度知道 编辑:UC知道 时间:2024/09/23 01:26:18
输出一下图案:
*****
*****
*****
*****
*****#include<stdio.h>
void main()
{
char a[5]={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i<5;i++)
{
printf("\n");
printf(" ");
for(j=1;j<=i;j++)/*我很迷糊,每一行都是5个空格怎么会出现斜行的***?*/
printf("%c",space);
for(k=0;k<5;k++)
printf("%c",a[k]);
}
printf("\n");
}
还是那一句,当i=1的时候正好j等于i输出5个空格,然后j自加1,j也就变成了2,然后执行到最后返回到第一个for语句,这时i也等于2,然后到了第二句循环时正好j=i,这时也应该输出5个空格,我就迷糊怎么会输出斜的呢,按我的理解第一行是4个空格剩下的4行都是5个空格呀???

这一个for语句里面包含了两个for语句,你注释的那一行是这个意思,当J小于等于I的时候,才输出空格(J的初始值是1)。for(k=0;k<5;k++)printf("%c",a[k]);这个语句就是负责输出五个*的。
当I=0时,J从1开始,所以这句相当于是跳过了,一个空格都不输出。
当I=1时,相对地就有一个空格输出,然后就是五个*;
当I=2时,就有两个....
....
所以是斜的。懂了吧!]

其实C语言有时候懂了就很容易理解,不懂的时候很难体会,特别是和别人一起研究一个问题的时候,总是你会发现,真的是C语言太精妙,也有点难懂!

for(j=1;j<=i;j++)
printf("%c",space); 这个会随着i的增大 从而使循环次数增加 所以 输出是斜的
你i的循环每次循环到for(j=1;j<=i;j++) j的值就会被重新赋值为1