为了账号安全,请及时绑定邮箱和手机立即绑定

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

#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 回答

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


15 回复 有任何疑惑可以回复我~
#1

慕桂英8265774 提问者

非常感谢大佬写这么多
2018-08-14 回复 有任何疑惑可以回复我~
#2

noe12138

执行内层循环1: j=i=1,判断j小于5为真,循环输出1个空格四次后跳出内层循环1 为什么会输出一个空格四次??
2018-08-15 回复 有任何疑惑可以回复我~
#3

细娃儿

十分感谢!码这么多字辛苦了
2018-08-18 回复 有任何疑惑可以回复我~
#4

Gato

为什么会输出3个星号?哪里决定了星号的数量?望指教
2018-08-19 回复 有任何疑惑可以回复我~
#5

慕瓜2391630 回复 noe12138

j=1,j=2,j=3,j=4,所以是4次
2018-08-23 回复 有任何疑惑可以回复我~
#6

慕瓜2391630 回复 Gato

k与2*i-1相比较
2018-08-23 回复 有任何疑惑可以回复我~
#7

YINXUAN 回复 noe12138

输出四个空格后j=5所以跳出循环一
2018-09-04 回复 有任何疑惑可以回复我~
查看4条回复

举报

0/150
提交
取消
C语言入门
  • 参与学习       926253    人
  • 解答问题       20798    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信