C语言——分支语句 and 循环语句
目录
分支与循环
- 1什么是语句?
- 2.分支语句(选择结构)
- 2.1if语句
- 2.1.1悬空else
- 2.1.2if书写形式的对比
- 2.2switch语句
- 2.2.1在switch语句中的break
- 2.2default子句
- 3.循环语句
- 3.1while循环
- 3.1.1while语句中的break和continue
- 3.2for循环
- 3.2.1语法
- 3.2.1break和continue在for循环中
- 3.3do...while()循环
- 3.3.1do语句的语法:
- 3.3.2执行流程
- 3.3.3do语言的特点
- 3.3.4do while循环中的break和continue
- 4.go to语句
1什么是语句?
c语句可以分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
接下来给大家介绍的是控制语句。
控制语句用于控制程序的执行刘彻个。以实现程序的各种结构方式(C语言支持三种数据结构:顺序结构、选择结构、循环结构),他们有特定的语句定义符组成,C语言有九种控制语句。
可以分为以下三类:
- 条件判断语句也叫分支语句:if语句、switch语句;
- 循环执行语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
2.分支语句(选择结构)
如果你好好学习,校招时哪一个好offer,走上人生巅峰。
如果你不学习,毕业等于失业,回家卖红薯。
这就是选择!
2.1if语句
什么是if语句呢?语法结构又是怎么样的呢?
语法结构:
if(表达式)语句;
`if(表达式)语句1; else语句2;//多分支 if(表达式1)语句1; else if(表达式2)语句2; else语句3;....
举个例子演示一下
例题:输入一个年龄并做判断最终输出结果
#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if (age < 18){printf("少年\n");}else if (age >= 18 && age < 30){printf("青年\n");}else if (age >= 30 && age < 50){printf("中年\n");}else if (age >= 50 && age < 80){printf("老年\n");}else{printf("老寿星\n");}
}
解释一下:
如果表达式的结果为真,则语句执行
在C语言中如何表示真假?
0表示假,非0表示真。
如果条件成立,要执行多条语句,应该使用代码块
#include <stdio.h>
int main()
{if(表达式){语句列表1;}else{语句列表2;}return 0;
}
这里的一堆{ }
就是一个代码块。
2.1.1悬空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;
}
应该改为:
//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要
#include <stdio.h>
int main()
{int a = 0;int b = 2;if(a == 1){if(b == 2){printf("hehe\n");}}else{printf("haha\n");} return 0;
}
else的匹配: else适合它离的最近的if匹配的。
2.1.2if书写形式的对比
//代码1
if (condition) {return x;
}
return y;
//代码2
if (condition)
{return x;
}
else
{return y;
}
//代码3
int num = 1;
if (num == 5)
{printf("hehe\n");
}
//代码4
int num = 1;
if (5 == num)
{printf("hehe\n");
}
代码2和代码4更好一点,逻辑更加清晰,不容易出错。
2.2switch语句
stitch语句也是一种分支语句
常用于多分支的情况
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日
那我写成if...else if ...else if
的形式太复杂,switch正好可以解决这种麻烦。
这就是swtich语句:
switch(整型表达式)
{语句项;
}
而语句项是什么呢?
//是一些case语句
//如下
case 整型常量表达式:语句;
2.2.1在switch语句中的break
在switch语句中,我们没有办法直接实现分支,搭配break使用才能实现真正的分支。
比如:
int main()
{int day = 0;scanf("%d", &day);int n = 2;switch (day){default:printf("选择错误\n");break;case 1:printf("星期1\n");break;case 2:printf("星期2\n");break;case 3:printf("星期3\n");break;case 4:printf("星期4\n");break;case 5:printf("星期5\n");break;case 6:printf("星期6\n");break;case 7:printf("星期天\n");break;}return 0;
}
假如我们的需求变了:
输入1-5,输出的是“工作日”;
输入6-7,输出“休息日”
所以我们的代码就应该这样子实现
int main()
{int day = 0;scanf("%d", &day);int n = 2;switch (day){case 1:case 2:case 3:case 4:case 5:printf("工作日\n");break;case 6:case 7:printf("休息日\n");break;default:printf("选择错误\n");break;}return 0;
}
break语句的实际效果就是把语句列表划分为不同的分支部分。
编程好习惯
在最后一个case语句的后面加上一条break语句。
(之所以这么写是可以避免出现在以前的最后一个case语句后面忘了添加break语句)。
2.2default子句
如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case
标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
编程好习惯
在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
3.循环语句
- while
- for
- do while
3.1while循环
我们已经掌握了if语句`:
if(条件)语句;
当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了: while
语句,可以实现循环。
//while 语法结构
while(表达式)
循环语句;
比如我们实现:
在屏幕上打印1-10的数
#include <stdio.h>
int main()
{int i = 1;
while(i<=10)
{printf("%d ", i);
i = i+1;
}
return 0;
}
上面代码已经帮助我们了解了while语句的基本语法,那我们在了解一下:
3.1.1while语句中的break和continue
break介绍
#include <stdio.h>
int main()
{int i = 1;while (i <= 10){if (i == 5)break;printf("%d ", i);i = i + 1;}return 0;
}
这串代码输出的结果是什么呢?
很显然他只输出了1-4
总结:
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有循环,直接终止循环
所以,while中的break是用于永久终止循环的。
continue介绍
//continue 代码实例1
#include <stdio.h>
int main()
{int i = 1;
while(i<=10)
{if(i == 5)
continue;
printf("%d ", i);
i = i+1;
}
return 0;
}
这串代码又会输出什么呢?
我们会发现程序到这里就崩掉了,崩掉的原因是什么呢?
我们来看看这串代码:
#include <stdio.h>
int main()
{int i = 1;while (i <= 10){i = i + 1;if (i == 5)continue;printf("%d ", i);}return 0;
}
运行结果>
总结:
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断
3.2for循环
我们已经知道了while循环,但是我么为什么还要一个for循环呢?
首先来看看for循环的语法:
3.2.1语法
for(表达式1;表达式2;表达式3)循环语句;
表达式1
表达式1为初始化部分,用于初始换循环变量的。
表达式2 **
表达式2为条件判断部分**,用于判断循什么时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
实际应用
使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h>
int main()
{int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{printf("%d ", i);
}
return 0;
}
3.2.1break和continue在for循环中
for循环中的break 和continue和while循环中的意义是一样的
但还是有点点差异:
//代码1
#include <stdio.h>
int main()
{int i = 0;for (i = 1; i <= 10; i++){if (i == 5)break;printf("%d ", i);}return 0;
}
int main()
{int i = 0;for (i = 1; i <= 10; i++){if (i == 5)continue;printf("%d ", i);}return 0;
}
3.3do…while()循环
3.3.1do语句的语法:
do
循环语句;
while(表达式);
3.3.2执行流程
3.3.3do语言的特点
循环至少执行一次,使用的场景悠闲,所以不是经常使用。
#include <stdio.h>
int main()
{int i = 1;
do
{printf("%d ", i);i=i+1;
}while(i<=10);
return 0;
}
3.3.4do while循环中的break和continue
#include <stdio.h>
int main()
{int i = 1;do{if (5 == i)break;printf("%d ", i);i = i + 1;} while (i <= 10);return 0;
}
#include <stdio.h>
int main()
{int i = 1;do{if (5 == i)continue;printf("%d ", i);i = i + 1;} while (i <= 10);return 0;
}
这里就不做演示了效果与上面相同
4.go to语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过
程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
goto语言真正适合的场景如下:
for(...)for(...){for(...){if(disaster)goto error;}}…
error:
if(disaster)// 处理错误情况
下面是使用goto语句的一个例子,然后使用循环的实现方式替换goto语句:
一个关机程序
#include <stdio.h>
int main()
{char input[10] = { 0 };system("shutdown -s -t 60");
again:printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");scanf("%s", input);if (0 == strcmp(input, "我是猪")){system("shutdown -a");}else{goto again;}return 0;
}
关于shutdown命令的扩展(请点击这里)
本章结束
C语言——分支语句 and 循环语句相关推荐
- C语言分支语句与循环语句较为全面的总结,快来看呀!!
分支语句和循环语句: 写在开篇:C语言其实算比较熟悉了,这里都是一些基础的总结,但感觉每次看都会有一些收获,也许这就是意义所在,冲冲冲!! 本章重点学习分支语句和循环语句的使用. 分支语句: if s ...
- C语言——分支语句和循环语句
目录 1.什么是语句 2.分支语句(选择结构) 2.1 if语句 2.2switch语句 3.循环语句 3.1while语句 3.1.1 语法 3.1.2 while中break和continue 3 ...
- 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(),三种循环语句, ...
- python分支语句_Python语言基础分支语句、循环语句.ppt
* * 循环结构回顾 for循环 for 循环作为编程语言中最强力的特征之一 Python可以使用for语句循环遍历整个序列的值 for循环所做的概括为一句话: 于- 其中的每一个元素,做-事情 * ...
- C语言初阶第三篇:换我心,为你心,始知C语言 从C语言选择语句到循环语句保姆教学来喽
换我心,为你心,始知C语言 老铁们,咱们上一篇文章把字符串的知识点给过了一遍,今天就要开始真正的程序语句的学习了,也就是选择语句和循环语句,今天的内容比较简单,所以写的也不多,废话不多说,咱们开始吧! ...
- c语言输入循环语句,C语言中输入输出和循环语句详解.ppt
C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...
- C语言入门练习 - 第二期 判断语句与循环语句(题解)
比赛地址:C语言入门练习 - 第二期 判断语句与循环语句 A.入门--基础语法(for) #include<stdio.h> int main(){int n,i;scanf(" ...
- Matlab变量、分支语句和循环语句
Matlab变量.分支语句和循环语句 一.Matlab的变量 1.变量的命名 Matlab的变量名由数字.字母和下划线组成,可是仅仅能由字母开头.大写和小写敏感,最大长度为63个字符.不能使用Matl ...
- C语言中要改变循环语句的流程可以使用的语句有哪些
C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...
最新文章
- 基因突变不是随机的?!Nature最新论文挑战进化论
- yunyang tensorflow-yolov3 Intel Realsense D435 (并发)使用locals()函数批量配置摄像头运行识别程序并画框(代码记录)(代码示例)
- linux 替换文件中的内容/查找、替换、全部替换
- Catboost原文解读
- mysql数据与Hadoop之间导入导出之Sqoop实例
- [ BZOJ 3879 ] SvT
- table中动态删除当前行
- 《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.6 磁盘驱动部件...
- MySql安全模式下修改root账号密码
- UCGUI使用的24位颜色RGB数值对照表
- Java阿拉伯数字转换为大写数字
- 电脑黑屏怎么办?实用解决方法!
- 汽车行业,怎么样通过论坛快速引流?
- 数据结构教程(第五版 李春葆 上机实验题3 验证性实验)
- 便利店的选址有什么诀窍吗?需要掌握哪些选址技巧?
- Vue联动下拉框默认选中
- 在vscode编辑器中,vetur和volar冲突
- IDA*算法实现的数字拼图游戏
- k8s 拉取镜像失败_[k8s问题笔录] 记一次 kubectl 部署时,pull image 报错,拉取不到镜像...
- Audio Codec