当前位置:网站首页>【C语言】手撕循环结构 —— for语句
【C语言】手撕循环结构 —— for语句
2022-08-02 13:04:00 【凡人编程传】
作者:凡人编程传
系列:C语言初阶(适合小白入门)
说明:以凡人之笔墨,书写未来之大梦
这一节我们介绍C语言中用的最多的循环语句——for语句,他的形式与while语句可有点不太一样,在while语句的基础上可谓是进一步升华,接下来就听我娓娓道来吧。
for语句的基本结构
for(表达式1;表达式2;表达式3;)
语句;
for语句这样的结构,表达式1对应的是初始化循环变量,表达式2则对应的循环判断条件,表达式3是循环变量的更新,这样的集中管理与while语句的分散管理前者显得更容易控制政哥哥循环结构。
for语句的执行流程
for语句的表达式执行流程与while语句也有不一样的地方,请看下图。
如图可知,for语句先是执行了表达式1(初始化循环变量),接下来执行表达式2(循环判断条件),接着进入循环体执行语句,最后执行表达式3(循环变量的更新), 其中注意:若循环体中有break可以让整个循环直接结束;或者有continue是让continue后面的语句都不执行直接开始下一次循环。
for语句的基本使用
实例1
- 输出0 -9
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", i);
}
}
运行结果:
这几行小小的代码就能输出这么几个数,可见for循环的便捷性
实例2
#include<stdio.h>
int main()
{
int i = 0;
for (i = 0; ; i++)
{
printf("%d ", i);
}
}
运行结果:
从这段代码的结果(死循环),可以列出以下知识点。
1.for语句的3个表达式可以省略,但是表达式2(循环判断条件)省略,则会导致死循环
此外:请看
for语句中的3个表达式可以任意邵略,但是用于分隔表达式的分号;不能省略。
笔试题真题练习
上代码:
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for (;i < 3; i++)
{
for (; j < 3; j++)
{
printf("hello\n"); //结果打印几个hello?
}
}
return 0;
}
运行结果:
为什么是3个呢?别急,听我慢慢说。
首先,我们在循环外面初始化了2个循环控制变量。然后进入外层for循环发现没有表达式1,直接跳过去判断表达式2,此时i=0,那么i<3为真,进入循环体执行内层for循环,内层循环的循环控制变量也是在外面就初始化了,所以直接跳过执行表达式2,此时j=0,j<3为真,然后进入内层循环体打印1个hehe,接着执行表达式3j++,此时j=2,再次执行表达式2,j<3为真,进入内层循环体输出第二个hehe,再次执行表达式3j++,促成j=3,j<3为假,内层循环结束,也就是外层循环体结束。外层循环接着执行表达式3i++,此时i=1,I<3为真,则执行循环体,再次进入层循环,# 此时内层循环表达式1为空不进行j=0这一个操作,则执行表达式2,j<3,此时j这个的变量并没有重新初始化为0,所以j=3,j<3这个条件为假结束内层循环…后面的过程一样直到i=3外层循环结束,那么整个循环结束。
这道题告诉我们,尽量不要省略for循环的表达式否则会造成意想不到的结果,除非你对for循环的执行流程非常熟练,能做到游刃有余。
总结
1.for语句的表达式可以任意省略,但是是在对for语句非常熟悉的前提下。
2.用于分隔for语句表达式的分号不能省略。
好了for语句的知识点就是这些,但是看完了要去多实践,才能真正把知识学到手。希望你有所收获!
边栏推荐
猜你喜欢
随机推荐
基于华为eNSP的企业网络规划
定了!2022世界VR产业大会将继续在南昌召开
我的创作纪念日
路由-嵌套路由
Set proxy server (Google+IE) "Recommended Collection"
基于 WeihanLi.Npoi 实现excel导入时纯汉字的日期转换
第48篇-timestamp2参数分析【2022-08-01】
Interpretation of new features | MySQL 8.0 GIPK invisible primary key
In-depth analysis and use of Ribbon load balancing
To eliminate air bubbles to save the mushroom h5 small game source code
永远退出机器学习界!
如何关闭开启硬件加速[通俗易懂]
RestTemplate 使用:设置请求头、请求体
冰箱“扩容”的战事,在今夏格外猛烈
【C语言】细品分支结构——if-else语句
"Second Uncle" is popular, do you know the basic elements of "exploding" short videos from the media?
.Net 5.0快速上手 Redis
【C语言】手撕循环结构 ——do...while语句及循环练习题(1)
一款强大的js弹出alert插件
package.json and package-lock.json