【C语言】基础语法3:控制流程结构

news2025/4/5 4:29:14

上一篇:运算符和表达式
下一篇:函数和递归

❤️‍🔥前情提要❤️‍🔥
  欢迎来到C语言基本语法教程
  在本专栏结束后会将所有内容整理成思维导图(结束换链接)并免费提供给大家学习,希望大家纠错指正。本专栏将以基础出发,在之后的教程中将会不断学习并详细讲解C语言的基本语法及其高级用法
  上一节讲了C语言基础中的运算符和表达式,接下来让我们来一起学习C语言中的控制流程结构。学习完成后可以点击C语言控制流程结构中20个注意事项及代码示例进行学习。

请添加图片描述

  🍪本教程内容干货满满,跟上步伐吧~🍪


作者介绍

🎓 作者:某不知名编程爱好者📜
🗒️系列文章&专栏推荐: 🔗《华为机试题解析》 、🔗《C语言程序设计》、🔗 《MySQL数据库》
🕸️为大家推荐一款很好用的C语言刷题网站🔗点击跳转


🔖导航小助手🔖

    • 📑 1. 顺序结构
    • 📑 2. 分支结构
      • 🏷️ 2.1 if语句
      • 🏷️ 2.2 if-else语句
      • 🏷️ 2.3 switch语句
    • 📑 3. 循环结构
      • 🏷️ 3.1 while语句
      • 🏷️ 3.2 do-while语句
      • 🏷️ 3.3 for语句
    • 📑 4. 跳转结构
      • 🏷️ 4.1 break语句
      • 🏷️ 4.2 continue语句
      • 🏷️ 4.3 goto语句
    • ⚠️ 5. 注意事项


📑 1. 顺序结构

顺序结构是指程序按照代码的书写顺序依次执行,没有任何分支或循环。顺序结构是C语言中最基本的控制流程结构,下面是一个简单的顺序结构示例:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    printf("这是一个简单的程序\n");
    return 0;
}

上述示例程序中,两个printf语句依次执行,输出了两个字符串。


📑 2. 分支结构

💡 概念

分支结构是指程序根据不同的条件选择不同的执行路径。C语言中常用的分支结构包括if语句if-else语句switch语句


🏷️ 2.1 if语句

if语句用于判断一个条件是否成立,如果成立则执行一段代码,否则不执行。下面是一个简单的if语句示例:

#include <stdio.h>

int main() {
    int a = 10;
    if (a > 0) {
        printf("a是一个正数\n");
    }
    return 0;
}

上述示例程序中,if语句判断变量a是否大于0,如果成立则输出一条字符串。


🏷️ 2.2 if-else语句

💡 概念

if-else语句用于判断一个条件是否成立,如果成立则执行一段代码,否则执行另一段代码。下面是一个简单的if-else语句示例:

#include <stdio.h>

int main() {
    int a = 10;
    if (a > 0) {
        printf("a是一个正数\n");
    } else {
        printf("a不是一个正数\n");
    }
    return 0;
}

上述示例程序中,if-else语句判断变量a是否大于0,如果成立则输出一条字符串,否则输出另一条字符串。


🏷️ 2.3 switch语句

switch语句用于根据不同的条件选择不同的执行路径。它可以替代多个if-else语句。下面是一个简单的switch语句示例:

#include <stdio.h>

int main() {
    int a = 2;
    switch (a) {
        case 1:
            printf("a是1\n");
            break;
        case 2:
            printf("a是2\n");
            break;
        default:
            printf("a不是1或2\n");
            break;
    }
    return 0;
}

上述示例程序中,switch语句根据变量a的值选择执行不同的代码段。


📑 3. 循环结构

💡 概念

循环结构是指程序可以重复执行某一段代码,直到满足某个条件停止。C语言中常用的循环结构包括while语句do-while语句for语句


🏷️ 3.1 while语句

while语句用于重复执行一段代码,直到满足某个条件才停止。下面是一个简单的while语句示例:

#include <stdio.h>

int main() {
    int a = 0;
    while (a < 10) {
        printf("a = %d\n", a);
        a++;
    }
    return 0;
}

上述示例程序中,while语句重复执行printf语句,直到变量a的值大于等于10。


🏷️ 3.2 do-while语句

do-while语句与while语句类似,但是它先执行一次代码,然后再判断条件是否成立。下面是一个简单的do-while语句示例:

#include <stdio.h>

int main() {
    int a = 0;
    do {
        printf("a = %d\n", a);
        a++;
    } while (a < 10);
    return 0;
}

上述示例程序中,do-while语句先输出一次printf语句,然后重复执行,直到变量a的值大于等于10。


🏷️ 3.3 for语句

for语句用于重复执行一段代码,可以在循环过程中控制循环变量的值。下面是一个简单的for语句示例:

#include <stdio.h>

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

上述示例程序中,for语句重复执行printf语句,循环变量i的初始值为0,每次循环加1,直到i的值大于等于10。


📑 4. 跳转结构

💡 概念

跳转结构是指程序可以跳过某一段代码,直接执行其他代码。C语言中常用的跳转结构包括break语句continue语句goto语句return语句


🏷️ 4.1 break语句

break语句用于跳出循环,执行循环外的代码。下面是一个简单的break语句示例:

#include <stdio.h>

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

上述示例程序中,for循环执行5次后,遇到i等于5的情况,执行break语句跳出循环。


🏷️ 4.2 continue语句

continue语句用于跳过本次循环,继续下一次循环。例如:

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

上述代码中,当i等于3时,continue语句会跳过本次循环,继续下一次循环。


🏷️ 4.3 goto语句

goto语句用于无条件跳转到指定标签处执行。例如:

goto label;
printf("Hello, world!\n");
label:
printf("Goodbye, world!\n");

上述代码中,goto语句会跳转到label标签处执行,输出"Goodbye, world!"。


⚠️ 5. 注意事项

控制流程结构是程序设计中最基本的概念之一,包括顺序结构、分支结构、循环结构和跳转结构。在编写程序时,需要注意以下几点:

  • 顺序结构:

    • 尽可能让代码简洁明了,避免冗余代码的出现。
    • 可以使用函数来封装一段代码,提高代码的可重用性
    • 应该注意代码的执行效率,尽可能减少不必要的计算和操作
  • 分支结构:

    • 应该考虑不同情况下的处理方式,确保程序的鲁棒性
    • if语句中,应该使用逻辑运算符来组合多个条件,避免使用过多的if语句
    • switch语句中,应该在default语句添加错误处理代码,确保程序的健壮性
  • 循环结构:

    • 应该注意循环体内的代码是否会产生副作用,避免出现不可预期的结果。
    • while循环中,应该避免使用无限循环,可以添加计数器或者时间限制来控制循环次数。
    • for循环中,应该注意循环体内的代码是否会改变循环变量的值,避免出现死循环
  • 跳转结构:

    • 应该慎重考虑,确保程序的结构和逻辑清晰明了。
    • 使用break语句时,应该避免在循环嵌套中使用,可以使用标志变量来控制循环的跳出。
    • 使用goto语句时,应该遵循良好的编程习惯,避免使用goto语句来跨越函数文件边界

上一篇:运算符和表达式
下一篇:函数和递归


## 🎀小结

⚡恭喜你的内功又双叒叕得到了提高!!!🔋

🔚以上就是C语言控制流程结构的全部知识了~

🤗感谢大家的阅读~

📬后续还会继续更新💓,欢迎持续关注哟~📌

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨


在这里插入图片描述


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

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

相关文章

linux_设置定时器(C语言)-alarm函数-time命令-settimer函数

接上一篇&#xff1a;linux_信号-终端按键信号-硬件异常信号-kill函数-raise函数-abort函数 本次来分享linux的定时器&#xff0c;也就是alarm函数和settimer函数的调用&#xff0c;同时也介绍time的一种用法&#xff0c;开始上菜&#xff1a; 此博主在CSDN发布的文章目录&…

C语言CRC-32 STM32格式校验函数

C语言CRC-32 STM32格式校验函数 CRC-32校验产生4个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-32校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-32校验函数 不同厂家通过对输入数…

一文读懂JavaWeb,前后端数据交互原来是这样的

文章目录 一、HTTP是前后端数据交互的载体1. HTTP Request2. HTTP Response 二、数据交互格式 JSON1. JSON对象与JSON字符串2. 不同语言中的JSON对象与JSON字符串互换 三、前端如何发送数据1. 表单发送数据2. JSON对象发送数据3. JSON 字符串方式 四、前端如何接收数据五、后端…

Android开发之桌面小部件Widget的基本用法

咱们有这么一个需求&#xff0c;在桌面添加一个app的小部件&#xff0c;小部件展示app里面的热门数据&#xff0c;点击小部件的刷新按钮实现刷新小部件上面的数据的功能。 咱们先看实现的效果图&#xff1a; 小部件的基本需求实现如上&#xff1a; 说明&#xff0c;先创建一个…

EEG源定位

导读 自从脑电图(EEG)被发现以来&#xff0c;人们希望EEG能提供一个了解大脑的窗口&#xff0c;研究人员一直试图用EEG无创定位大脑中产生头皮电位的神经元活动。20世纪50年代的早期探索使用电场理论从头皮电位分布推断大脑中电流偶极子的位置和方向&#xff0c;引发了大量定量…

网络请求实战-实战websocket聊天程序

目录 WebSocket协议初探 Socket连接的建立过程 聊天室&#xff1a;node.js端 聊天室&#xff1a;web端 小结 WebSocket协议初探 一个基于TCP的通信协议 复用HTTP的握手基于TCP传输协议 101切换协议 WebSocket连接之后&#xff0c;传输的都是二进制数据了 Socket连接的建…

Jmeter前置处理器和后置处理器

1. 后置处理器(Post Processor) 本质上是⼀种对sampler发出请求后接受到的响应数据进⾏处理 &#xff08;后处理&#xff09;的⽅法 正则表达式后置处理器 &#xff08;1&#xff09;引⽤名称&#xff1a;下⼀个请求要引⽤的参数名称&#xff0c;如填写title&#xff0c;则可…

Transformer的原理及应用分析

上一篇博文重点介绍了Transformer的核心组件MultiHeadAttention多头注意力机制&#xff0c;本篇继续介绍transformer的原理。下图为transformer的结构图&#xff0c;其主要由位置编码、多组编码器和多组解码器。以下将重点介绍三个部分。 1. 位置编码 Positional Encoding Att…

基于html+css的图片展示18

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Scala循环中断

目录 1.使用抛出和捕获异常的方法跳出当前循环2.使用Scala中的Breaks类的break方法3.测试4.简化 使用 ._ 来引入全部内容 方便调用 在scala中无法直接使用break关键字跳出当前循环&#xff0c;但有其他方法 1.使用抛出和捕获异常的方法跳出当前循环 def main(args: Array[Str…

DAB-DETR代码学习记录之Transformer模块解析

DAB-DETR是吸收了Deformable-DETR&#xff0c;Conditional-DETR&#xff0c;Anchor-DETR等基础上完善而来的。其主要贡献为将query初始化为x,y,w,h思维坐标形式。 这篇博文主要从代码角度来分析DAB-DETR所完成的工作。 DAB-DETR主要是对Decoder模型进行改进。 位置编码的温度值…

「线性DP-步入」传球游戏

传球游戏 题目描述 ​ 上体育课的时候&#xff0c;小蛮的老师经常带着同学们一起做游戏。这次&#xff0c;老师带着同学们一起做传球游戏。 ​ 游戏规则是这样的&#xff1a;n个同学站成一个圆圈&#xff0c;其中的一个同学手里拿着一个球&#xff0c;当老师吹哨子时开始传球…

Java -枚举的使用

一、背景及定义 枚举是在JDK1.5以后引入的。主要用途是&#xff1a;将一组常量组织起来&#xff0c;在这之前表示一组常量通常使用定义常量的方式&#xff1a; public static int final RED 1; public static int final GREEN 2; public static int final BLACK 3;但是常量…

Python3 OpenCV4 计算机视觉学习手册:1~5

原文&#xff1a;Learning OpenCV 4 Computer Vision with Python 3 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 计算机视觉 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 当别人说你没有底线的时候&a…

goland 启动go module 之后goland标红,unresolved reference 无法正常追踪代码

程序是别的同事写的,你这边从git上面拉下来 1.go build之后 所有的依赖都弄好了 2.go module也开启了 3.go程序能正常运行 最后还是依赖无法正常追踪 unresolved reference 解决步骤: 1.先让程序正常运行 go clean --modcache。再执行go run main.go或者go build重新编译 2.id…

如何通过开源项目搭建私有云平台--第四步上:安装rancher,搭建K8s集群

第四步上&#xff1a;安装rancher&#xff0c;搭建K8s集群 第四步比较复杂&#xff0c;因此准备分上中下三篇文章来介绍&#xff0c;本次采用rancher来部署K8s集群&#xff0c;选择rancher如下&#xff1a; 1&#xff09;部署K8s简单&#xff0c;有一个不是那么复杂的管理界面…

163种中草药(中药材)数据集说明(含下载地址)

163种中草药(中药材)数据集说明(含下载地址) 目录 163种中草药(中药材)数据集说明(含下载地址) 1. Chinese-Medicine-163数据集说明 2. Chinese-Medicine-163数据集下载 3. 深度学习实现中草药(中药材)识别 本文将分享一个大规模的中草药(中药材)图片数据集(Chinese-Medic…

Ubuntu18.04安装ROS Melodic

1.设置安装源 为了安装ROS Melodic&#xff0c;首先需要在Ubuntu 18.04 LTS上添加安装源到source.list&#xff0c;方法如下 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list 加…

元宇宙场景下的实时互动RTI技术能力构建

元宇宙可谓是处在风口浪尖&#xff0c;无数的厂商都对元宇宙未来抱有非常美好的憧憬。正因如此&#xff0c;许许多多厂商都在用他们自己的方案&#xff0c;为元宇宙更快、更好的实现&#xff0c;在自己的领域贡献力量。LiveVideoStack 2022北京站邀请到了 ZEGO 即构科技的解决方…

MobPush Android SDK厂商通道申请指南

华为厂商申请 创建应用 登录华为开发者联盟&#xff0c;注册您的应用&#xff0c;在应用信息中获取APP ID和Client Secret 配置SHA256证书指纹 在华为开发者联盟配置SHA256证书指纹。获取及配置请参见华为官方文档配置AppGallery Connect 设置消息回执 集成华为厂商通道SDK…