#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; }
请问为何第一行只有3个空格,(j=i; j<5; ,j++)第二层不是应该循环4次吗?
因为如果你选中运行出来的结果之后会发现最后一行前面也是有一个空格的,也就是说,第一行前面有4空格,第二行3个空格,第三行2个空格,第四行前1个空格
因为第一行的k只能取0,1,两次,而j原本要从1循环到5,但减去k的两次,所以j只能到3就结束了