罗欣
2015-12-19 12:29
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<5; i++)
{
/* 观察每行的空格数量,补全循环条件 */
for( j=i;j<5 ; j++ )
{
printf(" "); //输出空格
}
/* 观察每行*号的数量,补全循环条件 */
for( k=0 ;k< 2*i-1; k++ )
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}
#include <stdio.h> int main() { int i, j, k; //定义三个int类型的数 for(i=1; i<5; i++) //外循环i初始值1,循环5次 { /* 观察每行的空格数量,补全循环条件 */ for( j=i ; j<5 ; j++ ) //内循环1,j=i表示j受i约束,即第一次循环j=1,第二次j=2 ,... { printf(" "); //输出空格 //j=1时输1个空格整个(外)循环结束4个,j=2时整个(外)循环结束3个 } //printf(j); /* 观察每行*号的数量,补全循环条件 */ for( k=0 ; k<i*2-1; k++) //k<i*2-1第一次循环i=1,k=1*2-1=1,第二次等于3,... { printf("*"); //每行输出的*号,第一次循环输出1*,二次3*,三次5* } printf("\n"); //每次循环换行 } return 0; }
这个程序难理解的地方大概就是第一个内循环 j=i 和第二个内循环k=i*2-1,实例过程如下(空格用s表示,换行n):
第一次循环:(外循环下同)
ssss*n 内循环 1,j=1,1<5,输出4个空格,内循环2,k=1*2-1=1,输出1*
第二次循环:
ssss*n
sss***n 内循环1(第2次,下同),j=2,2<5,输出3个空格,内循环2(第二次,下同),k=3
第三次循环
ssss*n
sss***n
ss*****n 内循环1(3),j=3,3<5,输出2个空格,内循环2(3),k=5
第四次循环
ssss*n
sss***n
ss*****n
s*******n 内循环1(4),j=4,4<5,输出1个空格,内循环2(4),k=7
整个循环结束 #这是我的笔记
/* Note:Your choice is C IDE
*
***
*****
*******
*****
***
*
*/
#include "stdio.h"
void main()
{
int i,j,j1=5,k;//i:行, j:*的数量, k:空格数量
for(i=1;i<5;i++)
{for(k=i;k<4;k++)
printf(" ");
for(j=1;j<=i*2-1;j++)
printf("*");
printf("\n");
}
for(i=1;i<4;i++)
{
for(k=i;k>0;k--)
printf(" ");
for(j=j1;j>0;j--)
printf("*");
j1-=2;//保持j能够以每行少2个
printf("\n");
}
}
根据循环输出空格 和*号啊
嵌套循环呢,外面的循环控制行i=1,表示第一行,然后进行里面,内循环控制输出空格和*,第一个内循环输出一行的空格,第二个内循环控制输出一行的*。里面的循环结束后就输出好了一行,然后再到了外循环,i=2到第二行循环,以此类推。
C语言入门
926207 学习 · 20797 问题
相似问题