收集飞花令碎片——C语言分支与循环语句(上)

前言

Hello,各位码友,本章将会给大家带来C语言的分支与循环整章串讲,这一张的内容分为基础知识程序练习两个部分
希望通过这一章能够带大家更好地去掌握C语言的分支与循环语句


大家一起努力吧



C语言分支与循环语句(基础知识)

  • C语言语句的分类
  • 一、分支语句
    • (1)if语句
    • (2)if-else 语句
    • (3)if-else if-else 链
      • 流程图演示
    • 注意:悬空else问题
    • (4)switch 语句
  • 二、循环语句
    • (1)while 循环
    • 流程图演示
    • (2)do-while 循环
    • 流程图演示
    • (3)for 循环
    • 流程图演示
  • 三、嵌套循环
  • 拓展:辅助控制语句
    • (1)break
    • 流程图演示
    • (2)continue
    • 流程图演示
    • (3)goto
  • 这一章的C语言分支与循环结构的基础知识已经全部讲完了,下一章会利用几道程序设计题目让大家更好地掌握分支循环语句


C语言语句的分类

(1)表达式语句(例如 y=x+3;假设变量y和x均已定义)

(2)函数调用语句(MAX(x,y);假设函数MAX()已经定义)

(3)控制语句

(4)复合语句(把多种语句复合在一起形成的语句)

(5)空语句(例如 ;分号本身就可以作为一条语句,称为空语句,至于空语句的作用,后续会讲到 )

无论上述哪一种语句,都必须以分号结束!

一、分支语句

(1)if语句

作用: 基础条件判断

if (条件) {// 条件为真时执行
}


(2)if-else 语句

作用: 二选一分支。

if (条件) {// 条件为真时执行
} else {// 条件为假时执行
}


(3)if-else if-else 链

作用: 多条件分支。

if (条件1) {// 条件1为真时执行
} else if (条件2) {// 条件2为真时执行
} else {// 其他情况
}


流程图演示

开始
条件
执行if代码块
执行else代码块
结束

注意:悬空else问题

如果有多个ifelse,可以记住这样一条规则,else总是跟最近的if匹配

我们首先从最下面的代码开始

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;
}

最后你会发现,运行代码啥都不输出
这就是悬空else的问题,就是else总是跟最近的if匹配


(4)switch 语句

作用: 多路选择,基于整型或枚举值。

switch (表达式) {case1:// 匹配值1时执行break;case2:// 匹配值2时执行break;default:// 默认情况 或者 剩余情况
}


二、循环语句

(1)while 循环

作用: 先判断条件,后执行循环体。

while (条件) {// 条件为真时重复执行
}

流程图演示

开始
循环条件
执行循环体
遇到continue?
遇到break?
退出循环
结束


(2)do-while 循环

作用: 先执行一次循环体,再判断条件(至少执行一次)。

do {// 循环体
} while (条件);

流程图演示

开始
执行循环体
循环条件
遇到continue?
遇到break?
退出循环
结束


(3)for 循环

集初始化、条件判断、迭代于一行。

for (初始化; 条件; 迭代) {// 循环体
}

代码示例:

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

流程图演示

开始
初始化
循环条件
执行循环体
遇到continue?
执行迭代语句
遇到break?
退出循环
结束


三、嵌套循环

循环内包含其他循环(任意组合 for、while、do-while)。

for (int i = 0; i < 3; i++) {while (j < 2) {// 嵌套逻辑j++;}
}

利用嵌套循环可以打印出不同样式的九九乘法表,在程序练习那一章会讲解


拓展:辅助控制语句

作用: 与分支和循环配合使用的跳转语句:

(1)break

作用: 立即退出当前循环或 switch 语句。

while (1) {if (x == 5) break; // 退出循环
}

流程图演示

while/do-while
for
循环体内部
遇到continue
跳过剩余代码
循环类型
回到条件判断
执行迭代语句后判断条件


(2)continue

作用: 跳过当前循环的剩余部分,进入下一次迭代。


注意:

  • 只能在 for、while、do-while 循环内部使用。

  • 不可在 switch 或非循环代码块中直接使用(除非 switch 嵌套在循环内)。

for (int i = 0; i < 10; i++) {if (i % 2 == 0) continue; // 跳过偶数printf("%d ", i); // 仅打印奇数
}

流程图演示

while/do-while
for
循环体内部
遇到continue
跳过剩余代码
循环类型
回到条件判断
执行迭代语句后判断条件


(3)goto

作用: 跳转到指定标签(慎用,易破坏代码结构)。

goto label;
// ... 
label:printf("跳转至此");


这一章的C语言分支与循环结构的基础知识已经全部讲完了,下一章会利用几道程序设计题目让大家更好地掌握分支循环语句

如果你觉得这篇文章对你有帮助,请给小编一个三连支持一下嘻嘻嘻

在这里插入图片描述

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

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

相关文章

嵌入式硬件篇---TOF|PID

文章目录 前言1. 硬件准备主控芯片ToF模块1.VL53L0X2.TFmini 执行机构&#xff1a;电机舵机其他 2. 硬件连接(1) VL53L0X&#xff08;IC接口&#xff09;(2) TFmini&#xff08;串口通信&#xff09; 3. ToF模块初始化与数据读取(1) VL53L0X&#xff08;基于HAL库&#xff09;(…

PCB设计实践(十二)PCB设计电容选型:功能、材质、规则

在PCB设计中&#xff0c;电容作为基础元件承担着滤波、储能、去耦、耦合等核心功能。其分类与使用规则直接影响电路稳定性、抗干扰能力和信号完整性。本文从工程实践角度系统梳理PCB设计中电容的五大分类、选型规范及布局布线规则&#xff0c;帮助设计者构建科学的电容应用体系…

vue2关闭eslint

在项目根目录下找到 vue.config.js 文件。如果没有该文件&#xff0c;可以直接在项目根目录创建一个。 2. 添加 lintOnSave: false 配置 module.exports {lintOnSave: false };

MyBatis 一对多关联映射在Spring Boot中的XML配置

在Spring Boot中使用MyBatis实现一对多关系时&#xff0c;可以通过XML映射文件来配置。下面我将详细介绍几种实现方式。 基本概念 一对多关系指的是一个实体对象包含多个子对象集合的情况&#xff0c;例如&#xff1a; 一个部门有多个员工一个订单有多个订单项一个博客有多个…

基于Stable Diffusion XL模型进行文本生成图像的训练

基于Stable Diffusion XL模型进行文本生成图像的训练 flyfish export MODEL_NAME"stabilityai/stable-diffusion-xl-base-1.0" export VAE_NAME"madebyollin/sdxl-vae-fp16-fix" export DATASET_NAME"lambdalabs/naruto-blip-captions"acceler…

基于React的高德地图api教程001:初始化地图

文章目录 1、初始化地图1.1 创建react项目1.2 可视化地图1.3 设置卫星地图1.4 添加开关开启3D地图1.5 代码下载1、初始化地图 1.1 创建react项目 创建geodeapi项目: npx create-react-app gaodeapi安装高德地图包: npm install @amap/amap-jsapi-loader1.2 可视化地图 在…

uniapp使用npm下载

uniapp的项目在使用HBuilder X创建时是不会有node_modules文件夹的&#xff0c;如下图所示&#xff1a; 但是uni-app不管基于哪个框架&#xff0c;它内部一定是有node.js的&#xff0c;否则没有办法去实现框架层面的一些东西&#xff0c;只是说它略微有点差异。具体差异表现在…

轻量在线工具箱系统源码 附教程

源码介绍 轻量在线工具箱系统源码,直接扔服务器 修改config/config.php文件里面的数据库 后台账号admin 密码admin123 本工具是AI写的 所以工具均是第三方接口直接写的。 需要加工具直接自己找接口写好扔到goju目录 后台自动读取 效果预览 源码获取 轻量在线工具箱系统源…

图解gpt之Seq2Seq架构与序列到序列模型

今天深入探讨如何构建更强大的序列到序列模型&#xff0c;特别是Seq2Seq架构。序列到序列模型&#xff0c;顾名思义&#xff0c;它的核心任务就是将一个序列映射到另一个序列。这个序列可以是文本&#xff0c;也可以是其他符号序列。最早&#xff0c;人们尝试用一个单一的RNN来…

mac M2能安装的虚拟机和linux系统系统

能适配MAC M2芯片的虚拟机下Linux系统的搭建全是深坑&#xff0c;目前网上的资料能搜到的都是错误的&#xff0c;自己整理并分享给坑友们~ 网上搜索到的推荐安装的改造过的centos7也无法进行yum操作&#xff0c;我这边建议安装centos8 VMware Fusion下载地址&#xff1a; htt…

「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具

引言&#xff1a;从Proteus到国产平台的范式革新 在高校嵌入式实验教学中&#xff0c;仿真工具的选择直接影响学生的工程能力培养与创新思维发展。长期以来&#xff0c;Proteus作为经典工具占据主导地位&#xff0c;但其设计理念已难以满足现代复杂系统教学与国产化技术需求。…

【Linux】在Arm服务器源码编译onnxruntime-gpu的whl

服务器信息&#xff1a; aarch64架构 ubuntu20.04 nvidia T4卡 编译onnxruntime-gpu前置条件&#xff1a; 已经安装合适的cuda已经安装合适的cudnn已经安装合适的cmake 源码编译onnxruntime-gpu的步骤 1. 下载源码 git clone --recursive https://github.com/microsoft/o…

前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)

前端实现本地文件上传与预览&#xff08;PDF格式展示&#xff09;不走后端接口 实现步骤 第一步&#xff1a;文件选择 使用前端原生input上传本地文件&#xff0c;或者是el-upload组件实现文件选择功能&#xff0c;核心在于文件渲染处理。&#xff08;input只不过可以自定义样…

Python 数据分析与可视化:开启数据洞察之旅(5/10)

一、Python 数据分析与可视化简介 在当今数字化时代&#xff0c;数据就像一座蕴藏无限价值的宝藏&#xff0c;等待着我们去挖掘和探索。而 Python&#xff0c;作为数据科学领域的明星语言&#xff0c;凭借其丰富的库和强大的功能&#xff0c;成为了开启这座宝藏的关键钥匙&…

C语言学习记录——深入理解指针(4)

OK&#xff0c;这一篇主要是讲我学习的3种指针类型。 正文开始&#xff1a; 一.字符指针 所谓字符指针&#xff0c;顾名思义就是指向字符的指针。一般写作 " char* " 直接来说说它的使用方法吧&#xff1a; &#xff08;1&#xff09;一般使用情况&#xff1a; i…

springboot3+vue3融合项目实战-大事件文章管理系统获取用户详细信息-ThreadLocal优化

一句话本质 为每个线程创建独立的变量副本&#xff0c;实现多线程环境下数据的安全隔离&#xff08;线程操作自己的副本&#xff0c;互不影响&#xff09;。 关键解读&#xff1a; 核心机制 • 同一个 ThreadLocal 对象&#xff08;如示意图中的红色区域 tl&#xff09;被多个线…

Nacos源码—8.Nacos升级gRPC分析六

大纲 7.服务端对服务实例进行健康检查 8.服务下线如何注销注册表和客户端等信息 9.事件驱动架构源码分析 一.处理ClientChangedEvent事件 也就是同步数据到集群节点&#xff1a; public class DistroClientDataProcessor extends SmartSubscriber implements DistroDataSt…

设计杂谈-工厂模式

“工厂”模式在各种框架中非常常见&#xff0c;包括 MyBatis&#xff0c;它是一种创建对象的设计模式。使用工厂模式有很多好处&#xff0c;尤其是在复杂的框架中&#xff0c;它可以带来更好的灵活性、可维护性和可配置性。 让我们以 MyBatis 为例&#xff0c;来理解工厂模式及…

AI与IoT携手,精准农业未来已来

AIoT&#xff1a;农业领域的变革先锋 在科技飞速发展的当下&#xff0c;人工智能&#xff08;AI&#xff09;与物联网&#xff08;IoT&#xff09;的融合 ——AIoT&#xff0c;正逐渐成为推动各行业变革的关键力量&#xff0c;农业领域也不例外。AIoT 技术通过将 AI 的智能分析…

排错-harbor-db容器异常重启

排错-harbor-db容器异常重启 环境&#xff1a; docker 19.03 , harbor-db(postgresql) goharbor/harbor-db:v2.5.6 现象&#xff1a; harbor-db 容器一直restart&#xff0c;查看日志发现 报错 initdb: error: directory "/var/lib/postgresql/data/pg13" exists…