盘复分支语句和循环语句的那些知识
目录
1.分支语句
一.if语句
if语句的语法结构
多分支
悬空else
二.switch
switch的语法结构
小结:
2.3种循环语句
1.while()
小结
2.for循环
for循环中的一些变形
3.do-while 循环
总结
1.分支语句
分支语句又叫做条件判断语句,由if语句和switch语句构成
一.if语句
if语句的语法结构
if(表达式)//单分支语句;
1.注意事项
()内部放表达式,判断的结果,为真,则执行,为假则跳过。在c语言中,非零即为真。
我们来看一道题:“if语句中,0为假,1为真。” ---> 答案是错误的。 1为真是没错,但是呢,它不全,以偏概全了。不能说除了1以外的数字就不是真的。
2.注意事项
if语句后面呢,只能跟一个语句,如果要多个语句,需要用{}。
多分支
第一类:
if(表达式) //满足条件进入if语句中{语句;}else //不满足条件进入else语句中{语句;}
第二类:
if(表达式){语句;}else if(表达式){语句;}// .... (还可以继续用 else if)else{语句;
}
要注意的是else if后面还需要增加表达式。
悬空else
#include <stdio.h>int main(){int a = 0;int b = 2;if(a == 1)if(b == 2)printf("hehe\n");elseprintf("haha\n");return 0;}
你认为结果是什么呢?可以思考下
答案呢
什么都没执行。
当我们用VS2019的时候,我们可以发现,else与离它最近的if对齐了。
这就是悬空else的匹配原则。
我们在回过来说上面的代码,如果按照它的代码,第一个if与else的对齐。本意上是想:如果 a==1的时候,进去判断b是否等于2,是则打印,不是则跳过,当a != 1 的时候,则打印 haha。
我们可以加上大括号来实现
int main(){int a = 0;int b = 2;if(a == 1){if(b == 2){printf("hehe\n");}}else{printf("haha\n");}return 0;}
运行结果:
二.switch
switch 常用于多分支
switch的语法结构
switch(整型表达式){case 整形表达式:语句;case 整形表达式:语句;case 整形表达式:语句;case 整形表达式:语句;}
整形有 char ,int, long , short ,以及无符号的这些类型
我们来看个练习
用switch语句实现
比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
那答案是否是这样呢?
int main()
{int i = 0;scanf("%d", &i);switch (i){case 1:printf("星期一\n");case 2:printf("星期二\n");case 3: printf("星期三\n");case 4:printf("星期四\n");case 5:printf("星期五\n");case 6:printf("星期六\n");case 7:printf("星期七\n");}return 0;}
运行结果:
这并不是我们想要的。
switch(i) ,i 输入多少,相当于是我们从哪个入口(case 整形表达式)进入我们的switch语句中。按照顺序结构一行一行的执行下去。例如这里,我们输入 2 ,找到 case 2 这个入口,进去switch语句中,一步一步的走下去。
如果想要 输入2,输出结果只有星期二,我们就要用到 break。
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
我们还需要想一个问题,如果输入的数字,不是1-7中的,我们是不是也需要处理一下。这时我们需要用到default。
default子句
default子句可以写在switch语句中的任意位置。
当switch中表达式的值,与case 标签(所对应的整形的值) 不匹配的时候,就会进入default子句。
一个switch语句中只能有一个default子句
那我们改一下代码看看结果如何:
int main(){int i = 0;scanf("%d", &i);switch (i){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期七\n");break;default:printf("输入错误,重新输入");
}return 0;
}
小结:
分支语句有2类,if语句和switch语句
else的匹配原则:离else最近的if相匹配
if(表达式)语句;switch(整形表达式)
{case 整形表达式:语句;break;case 整形表达式:语句;break;default :语句;
}
2.3种循环语句
循环语句中,有三个关键的东西:1.循环变量 2.条件判断部分(用于循环的终止) 3.调整部分(调整循环变量使其达到循环终止的条件)
1.while()
while循环流程图:
语法结构
while(表达式) //表达式-->循环条件{循环语句; //循环语句中要有,循环变量调整的部分} //循环变量,在进入while循环之前设置好
我们来看break和continue在循环中的作用
int main(){int arr[] = {1,2,3,4,5,6,7,8,9,10};//定义一个数组int n = 0; //循环变量while (n <10) //循环判断条件{printf("%d",arr[n]);if (n == 6)break;n++; //循环调整部分}return 0;}
在看看continue
int main(){int arr[] = {1,2,3,4,5,6,7,8,9,10};//定义一个数组int n = 0; //循环变量while (n <10)//循环判断条件{printf("%d",arr[n]);if (n == 6)continue;n++;//循环调整部分}return 0;}
我们来分析下:
break 在循环中的作用呢,是跳出循环。
continue在循环中的作用,是结束当前条件下的循环,continue下面的语句都不在执行,直接回到判断条件那,重新进入循环。
第二个代码,能不能不死循环呢,成功打印出1234568910呢,
肯定可以的,将我们循环调整部分,放到continue的上面就可以成功打印了。
需要将我们的 三要素进行调整一下。
小结
while循环中,条件判断的次数总比执行循环语句的次数多一次。
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。
break是直接结束循环。
2.for循环
语法结构
for(表达式1;表达式2;表达式3){循环语句;}
表达式1 --> 循环变量
表达式2 --> 条件判断部分
表达式3 --> 调整部分
for循环流程图
expr -- 表达式
这里的break和我们while循环中的break是一样的;
continue呢存在一点差异。
break:
continue:
在for循环中,使用continue不会遇到死循环,因为我们n++永远是在continue的上面,我们看流程图也是可以发现这一点的
for循环中的一些变形
int main(){//代码1for(;;){printf("hehe\n");}//for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题。//代码2int i = 0;int j = 0;//这里打印多少个hehe?for(i=0; i<10; i++){for(j=0; j<10; j++){printf("hehe\n");}}//代码3int i = 0;int j = 0;//如果省略掉初始化部分,这里打印多少个hehe?for(; i<10; i++){for(; j<10; j++){printf("hehe\n");}}//代码4-使用多余一个变量控制循环int x, y;for (x = 0, y = 0; x<2 && y<5; ++x, y++){printf("hehe\n");}return 0;}
大家可以尝试的去看看,我们只要增加一个变量 count 来计数就行了。
3.do-while 循环
语法结构
do{循环语句;}while(表达式);
do-while流程图
do-while循环中,不管满不满足条件,都会执行一次。
在来看看break和continue在do-while循环中的作用
break:
和上面两种循环中一样,跳出循环。
continue:
和我们while循环中一样。我们要将循环调整部分放在continue的上面,我们才能不死循环。
改变后
同样将我们的循环三要素改变。
总结
回顾了分支语句和循环语句。
分支语句 2类,if语句,switch语句
if语句的单分支,多分支以及else的匹配原则。
switch语句与break和default连用
循环语句 3类
while(表达式), for(表达式1;表达式2;表达式3), do-while(表达式)
循环语句中break和continue在各自循环的作用。
盘复分支语句和循环语句的那些知识相关推荐
- Matlab变量、分支语句和循环语句
Matlab变量.分支语句和循环语句 一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,可是仅仅能由字母开头.大写和小写敏感,最大长度为63个字符.不能使用Matl ...
- python分支语句_Python中的分支语句和循环语句及案例
今天是清明假期的最后一天,依旧学习着 Python,老样子来写一篇博客.本篇博文介绍一下 Python 中的 if 条件语句.while 循环语句.for in 循环语句以及 break 和 cont ...
- C语言分支语句与循环语句较为全面的总结,快来看呀!!
分支语句和循环语句: 写在开篇:C语言其实算比较熟悉了,这里都是一些基础的总结,但感觉每次看都会有一些收获,也许这就是意义所在,冲冲冲!! 本章重点学习分支语句和循环语句的使用. 分支语句: if s ...
- python分支语句_Python语言基础分支语句、循环语句.ppt
* * 循环结构回顾 for循环 for 循环作为编程语言中最强力的特征之一 Python可以使用for语句循环遍历整个序列的值 for循环所做的概括为一句话: 于- 其中的每一个元素,做-事情 * ...
- C语言——分支语句和循环语句
目录 1.什么是语句 2.分支语句(选择结构) 2.1 if语句 2.2switch语句 3.循环语句 3.1while语句 3.1.1 语法 3.1.2 while中break和continue 3 ...
- python多分支语句实例_Python分支语句与循环语句应用实例分析
Python分支语句与循环语句应用实例分析 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: Python分支语句与循环语句应用实例分析.txt ] (友情提示:右 ...
- 【分支语句与循环语句】
分支语句与循环语句 一.分支语句 1.多分支语句 2.悬空else 3.switch语句 2.循环语句 2.1 while循环 2.2 getchar()和putchar() 2.3 for循环 2. ...
- C语言学习 2.分支语句与循环语句
文章目录 分支语句与循环语句 1. 什么是语句 2. 分支语句(选择结构) 1. if语句 1.1 if的书写形式 1.2 练习 2. switch语句 2.1 在switch语句中的break 2. ...
- 【C语言】分支语句和循环语句
大家好!我是保护小周ღ,本期为大家带来的是C语言的分支语句和循环语句,详细的介绍了 if(). switch() 这两种分支语句,以及while().do while ().for(),三种循环语句, ...
最新文章
- 第十五周程序阅读-范型程序设计(6)
- 正则表达式grep, egrep, fgrep
- TomCat服务器和Web应用
- 网络层访问权限控制技术-ACL详解 (2)
- 使用durid的ConfigFilter对数据库密码加密
- 硬编码与非硬编码(软编码)区别
- ASP.NET中Session简单原理图
- java private 内部类_java中外部类是否可以访问内部类的private 元素呢?
- 深度的卷积神经网络CNN(MNIST数据集示例)
- 2017最后两个半月的安排
- [翻译 EF Core in Action 1.9] 掀开EF Core的引擎盖看看EF Core内部是如何工作的
- hadoop1.2.1伪分布式搭建
- 1133 Splitting A Linked List
- idea安装axios
- 校园热水供应系统设计思路
- android源码中国地图,Android 绘制中国地图
- 信息系统项目管理师论文范围管理范文(2021上半年范围管理论文)
- 手机浏览器打开百度网页
- 信号与系统 --- 线性卷积(linear convolution)
- java判断颜色合法_判断颜色是否合法的正则表达式(详解)
热门文章
- Unity Failed to resolve project template:Failed to decompress
- 养龟者,养心也(浅析巴西龟的饲养方法)
- html5自动填充账号密码,谷歌浏览器怎么自动填充账号密码?自动填充账号密码的方法分享...
- 针对此次疫情的防控建议
- [PWN][基础篇]基础理论
- win10共享服务器有的文件夹打不开,手把手教你解决win10系统共享文件夹无法访问的设置方案....
- 《Fundamentals Of Computer Graphics》虎书第三版翻译——第五章 线性代数
- (Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现
- 几种PHP实现网页抓取的程序代码
- IKEA宜家社会责任验厂标准