/* 观察每行的空格数量,补全循环条件 */
for( j=i;j<5;j++ )
直接j<4每行还能少输出一个空格
懂了,讲的很详细,太谢谢了!
#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; }
1.i=1时:
首先 for(i=1; i<5; i++)开始循环,最起始i=1,
然后执行到for( j=i ; j<5 ; j++ ),
也就是说 for( j=1 ; j<5 ; j++ ),j在循环中的所有取值为1,2,3,4,共计4次,故输出4个空格
然后执行到for( k=0 ; k<2*i-1 ; k++) k的所有取值为0,共计1次,故输出一个*
2.i=2时
for(i=1; i<5; i++)开始循环,最起始i=2
然后执行到for( j=i ; j<5 ; j++ ),
也就是说 for( j=2; j<5 ; j++ ),j在循环中的所有取值为2,3,4,共计3次,故输出3个空格
3.以此类推
i=3 输出2个空格
i=4 输出1个空格
i=5 此时跳出了循环