0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言基础篇--选择/顺序/循环结构

正点原子 2022-04-02 11:00 次阅读

以下文章来源于:公_众_号开源电子

前言

C语言中,按照程序的执行流程不同,分为顺序结构、分支结构和循环结构。多么复杂的逻辑事物都是由这三个结构组成。

顺序结构

顺序结构是最简单的一种流程结构,它采用自上而下的方式逐条执行各语句。简易顺序结构如下所示:

pYYBAGJHtWuAAAbSAAA5cJxcb7Q569.png

分支结构

分支结构,又称选择结构,可以控制程序的部分流程是否被执行,或者是从多条执行路径种选择一条来执行。在C语言中有两种选择语句:①if语句,用来实现两个分支的选择结构②switch语句,用来实现多分支的选择结构。

选择结构if,具体用法如表格所示:

if (表达式) {语句}

if (表达式) {语句1}

else {语句2}

if (表达式) { if (表达式) {语句} }

else {语句}

if (表达式) {语句}

else if (表达式) {语句}

else {语句}

选择结构switch,具体使用格式如下:

switch(整型表达式)
{
  case整型常量表达式1:
  [语句1;break;]
  case整型常量表达式2:
  [语句2;break;]
  case整型常量表达式3:
  [语句3;break;]
 …
  [default:
  语句n;break;]
}

在程序运行时,首先会计算整型表达式的值,然后用该值与后面的所有case标签进行一一匹配(即查看该值是否与case标签的表达式的值相同)。如果有匹配的case标签,则从该case标签起,执行后续的语句,直至遇到break语句为止。如果没有匹配到case标签,则从default标签起,执行后续的语句,直到遇到break为止。

这里特别需要注意:①case后带的表达式一定要是常数,并且是整型。②在语句后面通常是有break关键字。③ 最后一般有default,即前面case没有一个符合的情况,就会调到default里执行。虽然说语法上可以允许没有default,但是为了完整,建议是需要的。

那么if和switch这两种选择结构有啥区别呢?

if语句比较适用在对比条件比较复杂的且分支比较少的情况下使用;switch语句则是适用在对比条件比较简单且分支比较多的情况下使用;正常情况下,先考虑能不能用switch语句,假如不满足使用需求,则使用if语句。当然,不管黑猫白猫捉到老鼠的就是好猫,能实现效果即可。

循环结构

循环结构就是重复执行一个语句块,直到不满足某个条件为止。在C语言中有三种循环语句:①while语句②do while语句③for语句

while语句也称while循环,具体使用格式如下:

while(表达式)
  语句

while语句根据小括号内表达式的值来决定是否执行语句,当表达式的值为假时,循环结束,语句不会被执行;假如表达式的值为真,语句被执行,然后会再次判断表达式的值,如此反复,直至表达式的值为假。

do while语句也称do while循环,具体使用格式如下:

do 
语句
while(表达式)

从结构上,由“do”关键字开头,紧接着是语句也就是循环体了,最后是while关键字和表达式。do while语句是先执行循环体,然后再检查条件是否成立,若成立,再执行循环体,这就是跟while语句不同。

for语句,相对前面两个循环语句复杂一点,具体使用格式如下:

for(表达式1;表达式2;表达式3)
语句

相比前面的while和do while语句,for语句的表达式有三个,表达式之间用‘;’隔开,这三个表达式的作用和执行时期是不一样的,具体情况如下表:

表达式作用执行时期
表达式1通常在这个地方对循环变量进行初始化或赋值开始时执行1次
表达式2表达式的值为真时执行循环体,为假时结束for语句循环体执行前
表达式3通常在这个地方对循环变量进行修改,通常是加减操作循环体执行后

具体执行流程:在for语句被执行前,首先会执行表达式1,然后再检查表达式2的值:假如为假,不执行循环体,结束for语句;假如为真,则执行循环体语句。执行完循环语句后,再去执行表达式3,并再次去检查表达式2的值,如此反复,直到表达式2的值为假,结束for语句。

这三个循环语句,哪种情况用哪个好呢?

如果程序中固定了循环的次数,那么就可以采用for语句。如果程序中必须执行一次程序,那么就可以使用do while语句。除了以上两种情况,就可以使用while语句。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6044

    文章

    44633

    浏览量

    639563
  • 嵌入式
    +关注

    关注

    5096

    文章

    19208

    浏览量

    308458
  • C语言
    +关注

    关注

    180

    文章

    7616

    浏览量

    138078
  • 电子技术
    +关注

    关注

    18

    文章

    920

    浏览量

    56437
收藏 人收藏

    评论

    相关推荐

    分析C语言代码结构的设计问题

    来分析一个C语言代码结构的设计问题。 这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。 大家觉得,这样的代码设计有没有问题。 代码是某位学员在
    的头像 发表于 02-11 09:31 80次阅读

    Simcenter Micred Power Tester功率循环测试仪

    SimcenterMicredPowerTester功率循环测试仪使用结合了有效功率循环和热结构退化监测的测试硬件,评估功率半导体的热可靠性和使用寿命。为什么选择
    的头像 发表于 01-09 14:33 384次阅读
    Simcenter Micred Power Tester功率<b class='flag-5'>循环</b>测试仪

    深入理解C语言循环语句的应用与优化技巧

    在程序设计中,我们常常需要重复执行某一段代码。为了提高效率和简化代码,循环语句应运而生。C语言作为一门经典的编程语言,提供了多种循环控制
    的头像 发表于 12-07 01:11 278次阅读
    深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:<b class='flag-5'>循环</b>语句的应用与优化技巧

    结构体成员的顺序会影响结构体的大小吗

    相同的结构体成员,如果把顺序调整一下,会不会影响结构体的大小? 答案是会的,这主要跟字节对齐有关。 比如这样的结构体,前面两个是 char 类型,后面跟上一个 int 类型。 stru
    的头像 发表于 11-25 16:24 290次阅读

    如何选择适合自己的编程语言

    在当今这个技术日新月异的时代,编程语言选择对于软件开发者来说至关重要。不同的编程语言有着不同的优势和适用场景,因此,选择合适的编程语言不仅
    的头像 发表于 11-15 09:37 691次阅读

    C语言C++中结构体的区别

    同样是结构体,看看在C语言C++中有什么区别?
    的头像 发表于 10-30 15:11 379次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C
    的头像 发表于 10-29 17:31 479次阅读

    计算机程序的三种基本控制结构是什么

    顺序被执行一次,直到程序结束。在顺序结构中,每个语句都是顺序执行的,不存在任何跳转和分支。 选择结构
    的头像 发表于 09-04 17:00 1781次阅读

    技术干货驿站 ▏深入理解C语言:掌握程序结构知识

    在计算机编程的世界中,C语言被广泛认可为一门强大而高效的编程语言,其简洁的语法和直接的指令使得它成为了许多程序员的首选。了解C语言的程序
    的头像 发表于 07-27 08:45 1560次阅读
    技术干货驿站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:掌握程序<b class='flag-5'>结构</b>知识

    【《大语言模型应用指南》阅读体验】+ 基础

    今天开始学习《大语言模型应用指南》第一——基础,对于人工智能相关专业技术人员应该可以轻松加愉快的完成此阅读,但对于我还是有许多的知识点、专业术语比较陌生,需要网上搜索学习更多的资
    发表于 07-25 14:33

    PLC常用编程语言有哪些

    语言多种多样,每种语言都有其独特的特点和适用场景。本文将详细介绍PLC常用的编程语言,包括梯形图(LD)、指令表(IL)、功能模块图(FBD)、顺序功能流程图(SFC)以及
    的头像 发表于 06-14 16:58 1855次阅读

    嵌入式中C语言结构体基本实现

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构C语言编程中允许您存储不同数据类型的数据。
    的头像 发表于 05-11 08:49 1155次阅读
    嵌入式中<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b>体基本实现

    C语言结构体史上最详细的讲解【软件干货】

    struct结构体数据类型 前言 我们知道,在C语言中有一些基本的数据类型,如 char int float long double string(c99) 等等数据类型,他们可以表示
    的头像 发表于 03-28 17:52 898次阅读

    使用 MISRA C++:2023® 避免基于范围的 for 循环中的错误

    在前两博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环
    的头像 发表于 03-28 13:53 890次阅读
    使用 MISRA <b class='flag-5'>C</b>++:2023® 避免基于范围的 for <b class='flag-5'>循环</b>中的错误

    嵌入式系统中C语言结构体的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构C语言编程中允许您存储不同数据类型的数据。
    发表于 03-12 14:29 587次阅读
    嵌入式系统中<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b>体的基础实现与应用