C语言for循环嵌套忽略表达式1报错问题

1. for循环

1.1格式:

for(表达式1;表达式2;表达式3)
{
    语句块;
}


 1.2表达式作用:

各表达式作用:
表达式1:循环从什么地方开始
表达式2:循环到什么地方结束
表达式3:从开始到结束怎样变化

若要忽略各表达式:
1.若要忽略表达式1,因该for循环之前给循环变量赋值。
2.若要忽略表达式2,循环会陷入死循环。
3.若要忽略表达式3,因该再循环体中添加使循环变量值改变的语句。
4.若要忽略表达式1,2,3,不可以忽略()中的两个 ';' 。

 1.3执行步骤

先执行表达式1,2,再执行循环体,最后循环执行表达式2,3。

2.for循环嵌套

2.1格式:

格式:
for(表达式1;表达式2;表达式3)
{
    for(表达式1;表达式2;表达式3)
    {
        语句块;
    }
    语句块;
}

注意:若要忽略写某部分表达式,注意看其规范要求。

 2.2特点:

外循环执行一次,内循环全部执行一次

2.21eg:

3.忽略表达式1问题

3.1首先我们来看一个忽略表达式一的代码

从上面的代码输出,我们发现了问题,明明定义了 ‘ i ’ 从0开始循环到3,为什么 i 刚循环到0,还没循环i=1,就结束循环了呢?

带着这个问题我们去分析问题,看看循环是哪里出问题。

 

        通过上面的代码,我们在内循环下面再添加一个printf,  一是用来打印信息,二是用来分析程序能否正常运行到这里。通过结果不难分析出,i是正常循环的,并没有出现上面的i不循环,反而是k恒等于4,不进行变化  ,此时k=4不满足内循环表达式2  ‘k<=3’   ,也就是说内循环没有执行,那么接下来我们来分析一下为什么内循环不进行循环了。     

         

        通过上述代码,我们发现循环正常了,但我们还是忽略了表达式1,为什么现在就可以正常输出了呢?

       通过上述代码,分析可知,我们修改了int k=0 的位置,把它放进了第一个for循环里面,第二个for循环(内循环)的外面,然后代码就正常输出了,这是为什么呢?

        前面的代码执行我们知道,当把int k = 0,放在第一个for循环外面时,循环执行完,i正常进行循环,而k一值恒等于4。那为什么恒等于4之后,k就不改变了,我们不是给其赋初值了嘛,我们是给其赋初值0了,但那是在第一个for循环外面,在进行for循环嵌套时,外循环执行1次,内循环全部执行一次,当i=0时,内循环执行时,当执行到k=4时不满足条件,跳出内循环,准备进行下一次外循环,可当i=1时,内循环k=4,不满足再次循环k<=3的条件,故内循环无法执行,为了内循环可以正常执行,必须给k再次赋值为零,只有再次赋值为零,满足内函数的循环条件才能继续执行,当我们把k=0放在内循环上面,当每次外循环进行循环遍历时,会再次把赋值把k=0,即将k==4,修改为k==0,赋值结束后k满足条件,即可正常进入循环。

3.2牛刀小试

for循环注意循环条件,要完成全部遍历

3.3总结:

                                  初始化表达式时,因该在循环外面进行循环变量的初始化定义

        也就是说若for循环需要忽略表达式一,需要注意注意检测循环是否全部执行,注意表达式1忽略时,必须在for循环外面进行初始化,避免嵌套时不满住for循环执行条件2无法循环;文章到这里就结束了,如果觉得本文对你有收获的话,记得一键三连哦!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值