白骑士的C语言教学基础篇 1.3 控制流

系列目录

上一篇:白骑士的C语言教学基础篇 1.2 C语言基础语法

        在这一节中,我们将介绍C语言中的控制流结构,包括条件语句、循环语句以及循环控制语句。这些结构允许我们根据不同的条件执行不同的代码块,从而使程序更具灵活性和功能性。

条件语句(if, else, switch)

        条件语句用于根据表达式的结果执行不同的代码块。C语言中的条件语句包括 ‘if‘、‘else if‘、‘else‘ 和 ‘switch‘。

if 语句

        ‘if‘语句用于判断表达式是否为真,如果为真,则执行相应的代码块结构如下:

if (condition) {// 如果condition为真,执行此代码块
}

        例如:

int a = 10;if (a > 5) {printf("a is greater than 5\n");
}

if-else 语句

        ‘if-else‘ 语句在 ‘if‘ 条件为假时执行 ‘else‘ 代码块,结构如下:

if (condition) {// 如果condition为真,执行此代码块
} else {// 如果condition为假,执行此代码块
}

        例如:

int a = 10;if (a > 15) {printf("a is greater than 15\n");
} else {printf("a is not greater than 15\n");
}

if-else if-else 语句

        ‘if-else if-else‘ 语句用于检查多个条件,并执行相应的代码块,结构如下:

if (condition1) {// 如果condition1为真,执行此代码块
} else if (condition2) {// 如果condition2为真,执行此代码块
} else {// 如果以上条件都为假,执行此代码块
}

        例如:

int a = 10;if (a > 15) {printf("a is greater than 15\n");
} else if (a > 5) {printf("a is greater than 5 but not greater than 15\n");
} else {printf("a is not greater than 5\n");
}

switch 语句

        ‘switch‘ 语句用于根据表达式的值执行不同的代码块,结构如下:

switch (expression) {case value1:// 如果expression等于value1,执行此代码块break;case value2:// 如果expression等于value2,执行此代码块break;// 可以有多个case分支default:// 如果expression不等于任何case的值,执行此代码块
}

        例如:

int a = 2;switch (a) {case 1:printf("a is 1\n");break;case 2:printf("a is 2\n");break;case 3:printf("a is 3\n");break;default:printf("a is not 1, 2, or 3\n");
}

循环语句(for, while, do-while)

        循环语句用于重复执行代码块,直到条件不再满足。C语言中的循环语句包括 ‘for‘、‘while‘和‘do-while‘。

for 循环

        ‘for‘ 循环用于执行一个初始化语句,然后检查条件,如果条件为真则执行循环体,最后执行更新语句,结构如下:

for (initialization; condition; update) {// 循环体
}

        例如:

for (int i = 0; i < 5; i++) {printf("i = %d\n", i);
}

while 循环

        ‘while‘ 循环在每次迭代前检查条件,如果条件为真则执行循环体,结构如下:

while (condition) {// 循环体
}

        例如:

int i = 0;while (i < 5) {printf("i = %d\n", i);i++;
}

do-while 循环

        ‘do-while‘ 循环在每次迭代后检查条件,因此循环体至少执行一次,结构如下:

do {// 循环体
} 
while (condition);

        例如:

int i = 0;do {printf("i = %d\n", i);i++;
} 
while (i < 5);

循环控制(break, continue)

        循环控制语句用于改变循环的执行流程。C语言中的循环控制语句包括 ‘break‘ 和 ‘continue‘。

break 语句

        ‘break‘ 语句用于立即退出循环,不再执行循环体中的剩余语句,例如:

for (int i = 0; i < 10; i++) {if (i == 5) {break;}printf("i = %d\n", i);
}

        输出:

i = 0
i = 1
i = 2
i = 3
i = 4

continue 语句

        ‘continue‘ 语句用于跳过当前迭代中的剩余语句,并开始下一次迭代,例如:

for (int i = 0; i < 10; i++) {if (i == 5) {continue;}printf("i = %d\n", i);
}

        输出:

i = 0
i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9

示例代码

        以下是一个综合示例,展示了条件语句、循环语句和循环控制语句的使用:

#include <stdio.h>int main() {int num, i;printf("Enter a number: ");scanf("%d", &num);// 使用if-else语句判断奇偶性if (num % 2 == 0) {printf("%d is even.\n", num);} else {printf("%d is odd.\n", num);}// 使用for循环计算阶乘int factorial = 1;for (i = 1; i <= num; i++) {factorial *= i;}printf("Factorial of %d is %d.\n", num, factorial);// 使用while循环打印数字i = 1;while (i <= num) {printf("%d ", i);i++;}printf("\n");// 使用do-while循环打印数字i = 1;do {printf("%d ", i);i++;} while (i <= num);printf("\n");// 使用break和continue控制循环printf("Numbers from 1 to 10, skipping 5:\n");for (i = 1; i <= 10; i++) {if (i == 5) {continue; // 跳过5}printf("%d ", i);}printf("\n");return 0;
}

总结

        通过本节的学习,我们已经了解了C语言中的条件语句、循环语句以及循环控制语句的基本用法。这些控制流结构是编写灵活和高效程序的基础。在接下来的章节中,我们将继续探讨C语言的函数和数据结构,进一步提升编程能力。

下一篇:白骑士的C语言教学基础篇 1.4 函数与递归

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python中的并发编程(5)PyQt 多线程

PyQt 多线程 1 卡住的计时器 我们定义了一个计时器&#xff0c;每秒钟更新一次显示的数字。此外我们定义了一个耗时5秒的任务oh_no&#xff0c;和按钮“危险”绑定。 当我们点击“危险”按钮时&#xff0c;程序去执行oh_no&#xff0c;导致显示停止更新了。 import sys im…

Aspose.PDF功能演示:在程序中合并 JPG 文件

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

Kile钟优化等级讲解

这里直接说说kile的优化等级: 这里有4个等级,分别为:-O0、-O1、-O2、-O3 为什么要进行编译优化? 主要目的: 1. 提高代码执行的速度; 2. 减少内存占用; 3. 降低能耗,延长电池寿命; 4. 消除代码中冗余和不必要的代码,提高程序稳定性和可靠性。 Kile等级描述: -O0:这…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used数组&#xff0c;其实就是记录此时path里都有哪些元素…

【图论】200. 岛屿问题

200. 岛屿问题 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 问题描述 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&…

一个专为Android平台设计的高度可定制的日历库

大家好&#xff0c;今天给大家分享一个高度可定制的日历库kizitonwose/Calendar。 Calendar专为Android平台设计&#xff0c;支持RecyclerView和Compose框架。它提供了丰富的功能&#xff0c;允许开发者根据需求定制日历的外观和功能。 项目介绍 此库是开发Android应用时&…

大型语言模型评估调查

原文链接&#xff1a;A Survey on Evaluation of Large Language Models | ACM Transactions on Intelligent Systems and Technology 本文从三个关键维度&#xff1a;评价什么、在哪里评价和如何评价&#xff0c;对这些 LLMs 评价方法进行了全面回顾。 首先&#xff0c;我们…

第十四届蓝桥杯省赛C++A组F题【买瓜】题解(AC)

70pts 题目要求我们在给定的瓜中选择一些瓜&#xff0c;可以选择将瓜劈成两半&#xff0c;使得最后的总重量恰好等于 m m m。我们的目标是求出至少需要劈多少个瓜。 首先&#xff0c;我们注意到每个瓜的重量最多为 1 0 9 10^9 109&#xff0c;而求和的重量 m m m 也最多为…

C++ 彻底搞懂指针(1)

当有人问起,什么是指针时,我会毫不犹豫地回答,指针变量存放的是地址!然后呢,好像也说不出什么了,今天就再来详细看一下指针吧。 本文提纲如下: • 指针变量 • 未初始化的指针 • NULL • void指针 • 指针的指针 首先要明白几点: • 每个字节都有…

用OpenAI接口给女朋友手搓AI小助理,她说要奖励我,结果……

前言 最近&#xff0c;我那财经系的小女友迎来了考试周&#xff0c;她的复习资料已经堆得像珠穆朗玛峰一样高。压力山大的她不断让我帮她整理这些资料&#xff0c;还频频向我倾诉她的苦水。虽然我自己也挺忙的&#xff0c;但为了爱&#xff0c;我只能忍痛扛起这重担。。。为了…

【C++】STL-priority_queue

目录 1、priority_queue的使用 2、实现没有仿函数的优先级队列 3、实现有仿函数的优先级队列 3.1 仿函数 3.2 真正的优先级队列 3.3 优先级队列放自定义类型 1、priority_queue的使用 priority_queue是优先级队列&#xff0c;是一个容器适配器&#xff0c;不满足先进先出…

Spring Boot配置文件properties/yml/yaml

一、Spring Boot配置文件简介 &#xff08;1&#xff09;名字必须为application,否则无法识别。后缀有三种文件类型&#xff1a; properties/yml/yaml&#xff0c;但是yml和yaml使用方法相同 &#xff08;2&#xff09; Spring Boot 项⽬默认的配置文件为 properties &#xff…

【单片机毕业设计选题24041】-基于STM32的水质检测系统

系统功能: 系统上电后显示“欢迎使用水质检测系统请稍后”两秒后进入正常显示页面。 第一页面第一行显示“系统状态信息”&#xff0c;第二行显示温度和PH值信息&#xff0c;第三行显示 浑浊度信息&#xff0c;第四行显示TDS值信息。 第一页面下的按键操作&#xff1a; 短…

Kotlin中的类

类初始化顺序 constructor 里的参数列表是首先被执行的&#xff0c;紧接着是 init 块和属性初始化器&#xff0c;最后是次构造函数的函数体。 主构造函数参数列表firstProperty 初始化第一个 init 块secondProperty 初始化第二个 init 块次构造函数函数体 class Example const…

英语动词时态

英语动词时态总结 动词时态一般进行完成完成进行现在一般现在时态动词原形/动词原形s&#xff08;第三人称单数&#xff09;eat/eats现在进行时态助动词be的变位动词的现在分词am/is/are eating现在完成时态助动词have的变位动词的过去分词has/have eaten现在完成进行时态have…

SSE代替轮询?

什么是 SSE SSE&#xff08;Server-Sent Events&#xff0c;服务器发送事件&#xff09;&#xff0c;为特定目的而扩展的 HTTP 协议&#xff0c;用于实现服务器向客户端推送实时数据的单向通信。如果连接断开&#xff0c;浏览器会自动重连&#xff0c;传输的数据基于文本格式。…

力扣(2024.07.01)

1. 84——柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 标签&#xff1a;栈&#xff0c;数组&#xff0c;单调栈&#xff08;目…

面试题--SpringBoot

SpringBoot SpringBoot 是什么(了解) 是 Spring 的子项目,主要简化 Spring 开发难度,去掉了繁重配置,提供各种启动器,可以 让程序员很快上手,节省开发时间. SpringBoot 的优点(必会) SpringBoot 对上述 Spring 的缺点进行的改善和优化&#xff0c;基于约定优于配置的思想&am…

rust嵌入式开发2024

老的rust embedded book 其实过时了. 正确的姿势是embassy 入手. 先说下以前rust写嵌入怎么教学小白的. 第一步,从这里 svd2rust 工具,自己生成库第二部,有了这个库,相当于就有了pac外设访问文件,然后其实就可以搞起来了. 那么为啥不好搞了. 因为太乱了. 小白喜欢你告我咋弄…

[python][Anaconda]使用jupyter打开F盘或其他盘文件

jupyter有一个非常不好的体验&#xff0c;就是不能在界面切换到其他盘来打开文件。 使用它&#xff0c;比较死板的操作是要先进入文件目录&#xff0c;再运行jupyter。 以Windows的Anaconda安装了jupyter lab或jupyter notebook为例。 1&#xff0c;先运行Anaconda Prompt 2&…