循环与分支(一)

简介: 循环与分支(一)

之前几章都是简单了解c语言从本章节起,将开始正式学习C语言,从基础讲起。

本章的标题叫做循环与分支,我们将在本章介绍循环语句和分支语句。

循环语句有for语句,while语句,do-while语句;分支语句有if-else语句和switch语句。


一:什么是语句


C语言语句可分为以下五大类


1.表达式语句


2.函数调用语句


3.控制语句


4.复合语句


5.空语句


简单来理解,由逗号作为结束标记的就是一个语句。如果逗号前面什么都没有,就是一个空语句。 其他语句就不用多介绍了。本章重点在于控制语句。


控制语句分三种。1:一条路走到黑没有其他选择的叫做顺序结构;2:有多种选择的叫做选择结构;3:走到最后又回到开始的(比如一个圆)叫做循环结构。顺序结构,我们vs IED在读取代码时就是按顺序去读取。


可分成以下三类:

1. 条件判断语句也叫分支语句: if 语句、 switch 语句;

2. 循环执行语句: do while 语句、 while 语句、 for 语句;

3. 转向语句: break 语句、 goto 语句、 continue 语句、 return 语句。


二:分支语句(选择结构)


选择很好理解,从小到大所做的选择题就是一种选择至少需要两个还可以多至无限个。


2.1  if语句


if-else 最简单的语句,if-else允许嵌套使用。例如:

int a=5;
if(a>3)
 if(a>=5)
    printf("%d",a);
else
printf("hehe");

在if语句里嵌套了一个if,同理else也可以,if中的if也行,无限套娃。


当然,还是有点小细节需要注意的,我们的else仅跟最近的if,所以在看代码和写代码时需要注意。由于我学了Java更习惯Java的写法,喜欢在各种语句后面加上{ },把代码写在里面,“{ }”叫做代码块,表示这个代码所属于前面的语句,而且不容易出错,如果以后主学c++的不用这门写。


解释一下上述代码,a>3为真则继续进行。那么如何表示真假,由于c缺少了bool值类型,只能用0表示假,非零为真。


适当的使用 {} 可以使代码的逻辑更加清楚,并且代码风格很重要。

代码对比:

//代码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,个人感觉没什么太大区别,对习惯Java的人来说if后面接" { " 没问题,因为Java中虚拟机写出来就是这样的。习惯了c++的可能受不了代码4 。


if-else很好用,也很简单,但它不是全能的。例如:


输入 1 ,输出星期一

输入 2 ,输出星期二

输入 3 ,输出星期三

输入 4 ,输出星期四

输入 5 ,输出星期五

输入 6 ,输出星期六

输入 7 ,输出星期日

这显然不好用if-else去嵌套很麻烦。c提供了switch语句。


2.2switch语句

//基础语法:
switch(整型表达式) {
    case1:
        语句项;
    case2:
        语句项:
... 
...
}

用switch回答上面的题目,结果如下:

d9886cf49a2f4e10a2391cd47e85a39c.png


我只想进去case1,不想进入2,3,4... ,所以我们需要break关键字,及时中止语句。

bcdb5d22dcbc45a6bccbb0f287ce5883.png

为了避免某个地方出错,我们建议在写完case之后,写一个break,这也是看要求的,如果要求是1-5都为工作日,6,7为休息日,则需要换一种写法。


12f11f4ef50d4fdf96b28739f92bad43.png

这种写法可以不用一个case对应一个break。


break 语句 的实际效果是把语句列表划分为不同的分支部分。

那么如果遇到条件都不符合的情况怎么办呢, 其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在 C 中并不认为是个错误 ,但如果需要别的要求的话,c提供了default语句,表示其他所有的条件都输出default的子代码。

养成一个编程的好习惯,在每一个switch语句下写一个default语句。


三:循环结构(while)


循环结构分为三种,for循环,while循环,do-while循环;

循环结构简单来说就是重复做某件事。那我们怎么做呢?

C语言中给我们引入了: while 语句,可以实现循环。


while (表达式)

循环语句;



1d1f7a62237a4053b711a70396f8e7a9.png


举例:


//在屏幕上打印1-10的数字。

#include <stdio.h>

int main ()

{

int i = 1 ;

while ( i <= 10 )

{

printf ( "%d " , i );

i = i + 1 ;

}

return 0 ;

}


这里又需要提到break语句和continue语句 。

berak翻译就是打破循环,从c语言的角度来说就是当循环达到某个条件时,跳出循环;而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;
 }


其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 while中的break是用于永久终止循环的。

//continue 代码实例
#include <stdio.h>
int main()
{
 int i = 1;
 while(i<=10)
{
     if(i == 5)
     continue;
     printf("%d ", i);
     i = i+1;
}
 return 0; 
}


continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断 。

当然还有for循环和do-while循环,下一篇在了解。

相关文章
|
运维 监控
浅析SPI与CAN通信
SPI是一种常用的MCU与外设的通信方式,英文全称Serial Peripheral Interface。与之前介绍过的UART不同,SPI是串行,全双工,同步通信方式。SPI通常有4根物理连接线,分别是CS片选,SCK时钟,MOSI主机输出从机输入和MISO主机输入从机输出。CS片选是从机选择信号线,低电平有效。当CS为低电平时认为主机目前选中的本从机。SCK是串行时钟线,同步通信需要主从机时钟同步,主机利用SCK线与从机实现时钟同步。时钟由主机产生,决定了通讯的速率。
562 0
|
前端开发 JavaScript API
Layui的CRUD(增删改查)
Layui的CRUD(增删改查)
232 0
|
SQL 设计模式 数据库
领域模型:贫血模型与充血模型的深度解析
领域模型:贫血模型与充血模型的深度解析
|
11月前
|
Prometheus Kubernetes 监控
告警规则设置方法
告警规则设置方法
369 3
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
数据安全/隐私保护 网络安全 网络协议
2024年广东省网络系统管理样题第2套服务部署部分
2024年广东省网络系统管理样题第2套服务部署部分
2024年广东省网络系统管理样题第2套服务部署部分
AttributeError: module ‘torch.jit‘ has no attribute ‘_script_if_tracing‘
AttributeError: module ‘torch.jit‘ has no attribute ‘_script_if_tracing‘
444 0
|
JavaScript 前端开发
JavaScript中那些值会被转换为false
JavaScript中那些值会被转换为false
189 0
|
API PHP
用正则匹配ip
用正则匹配ip
289 2
|
Kubernetes jenkins 持续交付
云原生翘楚KubeSphere 和 知名开源项目 Pig 最佳实践
云原生翘楚KubeSphere 和 知名开源项目Pig 爱的火花。
750 0