慕桂英8265774
2018-08-14 10:22
#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<i*2-1 ; k++ )
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}
第一次运算 i=1;i<5;所以,i自加 则为2,
j=2;j小于5;j+1=3;
输出3个空格
k=0,0小于2*2-1=3;k+1
在第4个位置输入*号
第二次运算 i=2,i<5,i自加,为3
j=3;3小于5;3+1=4
输入4个空格? 好吧,我算不下去了,不会了 大神帮忙解答下
i控制循环打印行数,j控制循环打印空格数,k控制循环打印星号数
第一行星号 外层循环: i=1,判断i<5为真
执行内层循环1: j=i=1,判断j小于5为真,循环输出1个空格四次后跳出内层循环1
执行内层循环2: k=0,判断0小于1*2-1小于1为真,循环输出一次星号,跳出最内层循环2;
执行 printf("\n")进行换行操作
此时最外层循环执行完毕,i进行自增操作变成2
第二行星号 外层循环: i=2,判断i<5为真
执行内层循环1: j=i=2,判断j小于5为真,循环输出1个空格三次后跳出内层循环1
执行内层循环2: k=0,判断0小于2*2-1小于3为真,循环输出三次星号,跳出最内层循环2;
执行 printf("\n")进行换行操作
此时最外层循环执行完毕,i进行自增操作变成3
其余几行同上
你的理解错在for循环内的第三个表达式,判断第二个表达式为真之后运行第三个自增表达式,i++表示先用i当前值进行循环内部的计算,待所有运算完成后,i自增1;然后进行第二次循环判断,判断完后再次运行第三个自增表达式,然后再运行循环体......
C语言入门
927426 学习 · 21538 问题
相似问题