IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言初阶】超详细-分支语句和循环语句 -> 正文阅读

[C++知识库]【C语言初阶】超详细-分支语句和循环语句

在这里插入图片描述

1.语句分类

C语言分为五类语句

1.表达式语句
2.函数表达式
3. 控制语句
4.复合语句
5.空语句

本章将讲述控制语句,控制语句用于于控制程序的执行流程,以实现程序的各种结构方式。

控制语言又分为三类

1.分支语句:if语句 switch语句
2.循环语句:do while语句,while语句 for语句
3.转向语句:break语句 , goto语句 , continue语句 ,return语句

2.分支语句

什么是分支语句
首先我们先来了解一下分支语句,分支语句即是当满足a条件是,我们就会执行a的相关操作,如果不满足条件我们就会执行相关的操作。
我们在生活中也会有很多的选择,需要去选择,就好比我们去做一件事学编程,如果我们好好学习,就会找到好的工作,如果不好好学习,我们毕业即失业。
下面我们有那个一个流程图来说明这个问题。
在这里插入图片描述

2.1 if 分支语句

分支语句的实现
在这里插入图片描述
当程序进入判断语句时,如果满足条件语句,我们就执行语句1,否则执行语句2,然后再结束

在C语言中,0表示假,非零表示真

2.1.1 if分支语句的语法结构

结构一

if(表达式)
语句;

结构二

if(表达式)
语句1;
else
语句2;

结构三

if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

2.1.2 if -else代码代码演示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

分析:当我们在屏幕输入45是,会进入if语句的判断条件,这些判断不是一起判断,而是从第一个开始判断,不满足我们就跳过这个if语句,当45这个值满足这个条件是,程序就会进入执行语句,打印出我们想要的结果。

2.2 switch分支语句

2.2.1 switch分支语句的语法结构

switch(整型表达式)
 {
    case 整形常量表达式:
    语句;
 }

代码演示
在这里插入图片描述

上面我们用来两种分支语句来实现多分支,当我们使用switch分支语句时,我们通过day来对case语句进行匹配的,当我们输入的值为1时,我就会走到case 1语句,如果我们输入day是4,我们程序就会执行case 4的语句,也就是说是通过我们的switch中的整形表达式来对我们的case实现分支。

2.2.2 switch中的break

情景导入
在这里插入图片描述

当我们在屏幕输入4,我原本以为会打印我们想要的星期四,但是结果打印是星期四 星期五 星期六
星期天,说明在执行完case 4语句后,程序没有停下来,而是接着往后继续执行。
如果你希望case 4语句执行完之后,程序结束,这里就要用到我们的break语句

在这里插入图片描述

这里我们在加了break语句后,这里打印出我们想要的值,那break的工作原理是什么呢?

原理:当我们在switch中的整形表达式中输入是多少,我就会执行某一个case语句中,这里的case后的整形常数表达式决定的是入口,也就是说我们的day输入是那个数字,我们就会执行那个case语句。执行完后,break直接跳出整个分支语句
break语句 的实际效果是把语句列表划分为不同的分支部分。所以以后在switch语句时,最好在case语句后添加break语句

2.2.3 default句子

如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

在这里插入图片描述

3.循环语句

3.1 while循环

引入

当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
生活中也有类似的循环,比如夏天 海水蒸发遇冷变为水滴 水滴相遇变大到一定值落下形成雨 雨水汇聚成河流流入大海,每天太阳的东升西落。

while循环的流程图

在这里插入图片描述
当程序进入判断条件时,条件为真就是非零,我们会进入循环体,在执行循环体过程中,当遇到continue语句时我们会跳过continue语句后面的语句,直接回到判断条件,当遇到break时,我们循环体执行完,直接跳出整个循环体,如果没有遇到continue和break时,执行完循环语句后,回到判断语句,满足条件继续执行,否则结束循环,这就是循环的基本原理。

3.1.1 while循环语句语法结构

while(表达式)
循环语句;

在这里插入图片描述

3.3.2 while语句的break和continue

在这里插入图片描述

分析

为什么我们在这个加了一个continue,结果会这样呢?首先我们先来了解一下continue的作用。
continue的作用:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断
当上面程序来到 i=5时,进入循环,来到if语句,执行我们的continue的语句,continue后面语句不会执行,会直接跳到while语句的判断部分,此时 i 还是5,因为没有执行后面的i++,所以继续进入循环,在continue语句,就会导致上面的死循环,光标不停在闪烁。

在这里插入图片描述
分析

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

当我们程序执行到break,就会直接跳出循环,而continue没有跳出循环,而是continue后面的语句不执行,还是在循环中。

3.2 for循环语句

for循环的流程图:

在这里插入图片描述
当程序进入for循环语句的初始化部分expr 1时,我们会进入条件判断部分expr 2对expr 1进行判断,满足条件,表达式为真,非零,进入循环体,执行完循环体,程序来到循环条件的调整部分,在对新的条件进行重新判断,如果不满足条件,直接跳出整个循环,满足条件继续循环,这里的continue和break同while的作用相同。

3.2.1 for循环语句语法结构

for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。

在这里插入图片描述

3.2.2 for语句中的break和continue

在这里插入图片描述
continue作用是跳过continue后面的执行语句,所以这里没有打印5.

在这里插入图片描述

break是跳出整个循环。

3.2.3 for语句的循环控制变量

3.2.4 一些for循环的变种

代码一

#include <stdio.h>
int main()
{
	//for循环初始化,判断,调整三个部分可以省略
	//但是省略掉判断部分,就意味着判断恒为真
	for (;;)
	{
		printf("hehe\n");
	}
	return 0;
}

代码二

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	
	for (; i < 10; i++)//省略了初始化
	{
		for (; j < 10; j++)
		{
			printf("hehe\n");
		}
	}
	return 0;
}

代码三

#include<stdio.h>
int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)//使用多于一个变量控制循环
	{
		printf("hehe\n");
	}
	return 0;
}

3.3 do…while循环

do while循环语句流程图
在这里插入图片描述
程序进入我们的循环体,执行完循环体,在对条件的调整进行条件判断,如果条件为真,继续执行循环体,为假,结束循环。continue和break作用相同。

3.3.1 do while循环语句的语法结构

do
{
 循环语句;
}while(表达式);

在这里插入图片描述

3.3.2 do while中的break和continue

在这里插入图片描述
在这里插入图片描述

4. go to语句

** C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过
程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。**

代码演示

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;//当我们这里出现循环嵌套使用,要跳出多层循环,我就要用到goto语句
       }                   //这里error只是一个标签,可以取你想要的名字
   }
    …
error:
 if(disaster)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 18:45:50  更:2022-08-19 18:46:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/10 4:07:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码