C语言for循环语句及嵌套(误区,易错点要理解)

目录

前言

例题1:

例题2:

 for循环中contiune的使用:


前言

大家好,相信刚学C语言的小白们,觉得for循环是比较好用的,但是有时候写for循环语句的程序时,写出来的代码结果,和自己想要的不是一个结果,认为自己写的是对的,但其实是错的,我刚学习的时候也是,下面我分享一下两个程序一个是单循环,一个是for的循环嵌套,是经典易错的误区一起来看看吧。

首先来了解一下for循环语句;如果了解的小伙伴可以直接跳过,看例题;

我们都知道for循环分为三个部分为:

for(表达式1;表达式2;表达式3)

表达式1:可以用来赋初值。可以写多个语句,但是这多个语句要用逗号分开。(也可以不写,根据需求来进行编写)

表达式2:判断条件是否成立,如果成立,进入循环体;(同样也可以省略不写,如果不写就默认是1,也就是恒成立的,也就是死循环。如果要跳出循环,需要在循环体中编写break语句)

表达式3:一般用来定义循环变量的自增或自减;(同样也可以省略不写;这个循环变量可以在循环体中进行设置)

所以我们可以这三个语句我们都可以省略不写。但是切记用来分隔三个表达式的分号‘;’不可不写。

例题1:

其实乍一看这两程序是一样的,但仔细看,其是是有很大的不同的。第一个for的循环中有‘{}’,而第二个没有,那么这两个程序的结果,就是不一样的,而且,如果不注意这点,以后编写调用函数利用for循环,那么结果可是截然不同的,这两个结果分别为:

因为如果不加花括号,和其他循环体一样只会判断它下面的第一条语句是否为真,如果为真,则执行完这条语句后返回循环首部进行判断是否再次进入循环,并不是往下进行下一条语句。直到循环结束,然后执行下面的语句,如果不为真,则直接返回循环首部,进行第二次判定是否进入循环,直到不满足条件,循环结束,跳出循环。执行下面的语句。for语句和它下面的第一条语句构成一个循环体结构,如果有花括号,就是for语句和花括号里的内容构成循环体结构,就会依次执行花括号里面的语句,进行循环。(搭配一个小草图)

例题2:

如果上面的你已经掌握了,那么来试着想想这道程序的结果吧,我把结果留在最后,理解的朋友可以直接跳过看结果,不理解的朋友可以看看讲解。

这个程序和上面的程序,其实是一样的只不过是进行了一次嵌套,里面的for语句叫内循环,外面的for语句叫外循环。外循环执行一次,内循环执行一轮,全部执行完之后,返回外循环,重新判断,是否第二次进入内循环。

首先进入外循环,i的值为0,然后进入第二层循环,j的初值为0;进入内循环,判断a[i]是否等于b[j],如果等于,跳出第二层循环执行第一层循环i++;如果你是这么理解的,那么说明你还对上面的不太了解在这里其实并不是跳出内循环,然后去执行外循环语句,而是依次执行下面的语句,直到碰到花括号,结束本次花括号里的内容,返回外循环;因为上面说过for循环中没有花括号的话,只执行它下面的第一条语句;如果a[i]的值不等于b[j]不成立,则返回第内循环首部进行j++,然后判断是否再次进入内循环,直到循环结束如果都不满足下面的语句,那么循环结束,自动返回外循环首部,它下面的换行是不会执行的,直到外循环结束,才会执行。同理如果内循环中有花括号'{}',那么就会依次执行了。不论第一条语句是否成立,都会依次往下进行。(再次搭配一个小草图)

 for循环中contiune的使用:

下面用一个小栗子来说明:

int main()
{
    int i;
    for(i=1;i<6;i++)
    {
	   if(i%2)printf("*");
       else continue;
       printf("#");}
	return 0;
}

看下这个的结果:*#*#*#

首先,介绍一下continue的作用,它的用法是结束本轮循环,而并不是结束整个循环。

我相信有的小伙伴会认为结果是:***

我举出一个草图,来看一下吧;

 如果,想法出错的小伙伴还是对加括号的循环不太理解,if-continue,也是一条语句,如果执行的是输出‘*’,执行完后会继续向下执行,输出‘#’;而如果执行的是continue则会直接返回到循环句首,执行表达式3;

好了以上就是本篇,内容,希望对困惑的小伙伴有帮助。如果哪里有不对的,请立刻指正,不要让我错下去。(手动滑稽) 。

猜你喜欢

转载自blog.csdn.net/weixin_67118900/article/details/123695279