求大神手工模拟循环运算讲解下

来源:4-12 循环结构之多重循环

慕桂英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个空格?    好吧,我算不下去了,不会了   大神帮忙解答下

                    

  

写回答 关注

1回答

  • 559c
    2018-08-14 11:40:10
    已采纳

    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;然后进行第二次循环判断,判断完后再次运行第三个自增表达式,然后再运行循环体......


    YINXUA... 回复noe121...

    输出四个空格后j=5所以跳出循环一

    2018-09-04 22:06:30

    共 7 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

927426 学习 · 21538 问题

查看课程

相似问题