news 2026/10/16 4:03:33

C语言修炼——三大结构之分支结构!!!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言修炼——三大结构之分支结构!!!

目录

  • 1.浅析分支结构
  • 2.分支结构的介绍
    • 2.1 if与else——语法:
    • 2.2 switch——语法
  • 3.案例解析——关机病毒


1.浅析分支结构

上一篇我们学习了顺序结构。我们知道,C程序代码编写离不开结构化设计,除了最基本的顺序结构,还有分支结构。

当我们还是小朋友的时候,要换牙齿了,家里就会有个规矩:爷爷奶奶说下面的牙齿要扔到屋顶,上面的牙齿要扔到低处或者埋土里,这样牙齿才能长的整齐。每次换牙都要记住这个规矩,生怕牙齿长歪了。这里面就包含了一个分支结构。

我们来分析一下这个图片:
用我们编程化的语言来说就是,在换牙齿这个函数或模块中,我们希望为整个程序提供完成牙齿长整齐的功能,也就是目标结果。我们必须按规则(即下面的牙齿丢屋顶,上面的牙齿丢低处)去做,才能得到目标结果。
在执行动作之前,这里有个分支:丢屋顶还是丢低处/埋土里,函数中需要进行一个条件判断,只要满足这个判断条件(上面的牙齿或下面的牙齿),程序就往对应方向执行,最终完成换牙齿事件。

2.分支结构的介绍

我们通常使用if-else或switch语句实现分支结构。

2.1 if与else——语法:

if(表达式){// 分支代码// ...// ...}

当然,下面这种也是可以正常运行的。

if(表达式)单个语句;// 例如:如果11大于10,则x赋值为5if(11>10)x=5;

后者并不是良好的代码风格(详情可看高质量的C/C++编程——林锐著)。
那么在这个语法结构中,当表达式为真,即表达式的结果为非0数或者true(布尔类型)时语句执行;当表达式为假,即表达式的结果为0或者false(布尔类型)时语句不执行。

想实现分支走向,还需要else语句,例如下面代码:

#include<stdio.h>intmain(){inta=5,b=10;if(a>b)// 如果a > b,打印 a > b{printf("a > b\n");}elseif(a<b)// 如果a < b,打印 a < b{printf("a < b\n");}else// 否则,打印 a = b{printf("a = b\n");}return0;}

这就是简单的“如果…就…,如果…就…,否则…”的中文语法结构。
我们先写if,如果还有其他走向就不断加else if,最后剩下的走向直接用else。
这里有个技巧,通常我们喜欢将最复杂的情况交给else判断。

以上就是if的基本用法。还有嵌套if实现多分支结构,无非是俄罗斯套娃,分支里面还有各种分支,在if、else if、else的花括号里面,按需要再设计条件判断,非常容易理解。

2.2 switch——语法

switch(表达式){// default在前,还是case在前,无顺序要求,但我们需要按照现实逻辑去排序casevalue1:语句break;casevalue2:语句break;default:语句// 即使程序真的无需default处理,代码书写规范也会要求保留语句default: break;break;}

switch应用范围没有if广,只适用于表达式是整型表达式的情况,如表达式1和表达式a+1。
这里需要注意一个规则:当表达式结果对应到某个case后面的值,那么包括这个case,以及后面的case与default,全部执行,无需再判断后面case的值。
因此,通常需要使用break——跳出循环或终止程序流跳出分支。我们可以根据实际情况,来选择是否使用break,若不想要分支重叠,只执行匹配到的一条case,则可以在对应case内的执行语句的最后加上break。

来看代码和结果:

可以看到,上述代码,按照现实逻辑区分并列出了各种情况(1、2、3、4、5、6、7),很好的展示了多分支结构、分支重叠和break语句的用法,相信可以帮助大家更好的理解。下面让我们带着这个思路来看一道案例吧。

3.案例解析——关机病毒

#include<stdio.h>#include<stdlib.h>//提供库函数system——可输入系统命令intmain(){chararr[100]={0};// 存储用户的输入system("shutdown -s -t 60");// shutdown -s -t 60是系统命令,系统执行命令将会在60秒后关机printf("请输入‘我是大笨猪!!!’,否则将在60s后关机\n");// 恐吓一下scanf("%s",arr);// 给他输入大笨猪的机会if(strcmp(arr,"我是大笨猪!!!")==0)// 第一个分支:strcmp判断用户输入是否正确,正确返回0,否则返回非0{system("shutdown -a");// 输入正确则进入第一个分支:shutdown -a系统命令:停止关机}else// 输入错误,第二个分支{system("shutdown -s -t 5");// 懂得都懂,不懂的也不必问for(inti=60;i>4;i--)// 简单的循环结构:i从60到5,循环56次{printf("你只剩下:%ds\n",i);// 汗流浃背了吧,小老弟}}return0;}

以上就是分支结构的案例解析了。当然,上述案例只有两个分支,很有限,我们其实可以开动脑筋,在里面加入更多的分支(趣味)。例如,输入正确后可以在第一个分支里加入更多的if分支来提问(zhe mo)你的好朋友们…


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 4:03:05

CentOS 7离线部署MaxKB与Ollama搭建私有化大模型问答系统

在 CentOS 7 上跑通离线大模型问答&#xff0c;最绕不开的问题就是“模型服务”和“知识库”这两件事怎么串起来。MaxKB 负责把文档喂给模型做检索增强问答&#xff0c;Ollama 负责在本地跑模型&#xff0c;两者一配&#xff0c;就变成了一套完全内网的智能小助手。这篇文章不聊…

作者头像 李华
网站建设 2026/10/16 4:02:30

Quartus原理图设计电子琴:FPGA数字逻辑模块化实战

简介&#xff1a;本资源是一份基于Quartus原理图设计方法实现的FPGA电子琴程序&#xff0c;面向具备数字电路基础、希望借助图形化方式入门FPGA开发的电子与计算机相关专业学生及爱好者。项目围绕音符频率生成、定时计数、DA转换接口、按键控制与乐曲存储等模块展开&#xff0c…

作者头像 李华
网站建设 2026/10/16 4:01:23

CMS投资回报率(ROI)怎么算?五步落地指南

做网站建设和管理的人&#xff0c;十有八九会遇到同一个尴尬时刻&#xff1a;老板问“我们换这套网页内容管理系统&#xff08;CMS&#xff09;&#xff0c;到底值不值&#xff1f;”你下意识会回答效率提升、内容更灵活、以后扩展不用重做……但老板要的不是“感受”&#xff…

作者头像 李华
网站建设 2026/10/16 4:00:44

Linux sort命令详解:从字典序到多级排序的高效文本处理

处理日志和配置文件时&#xff0c;最常用到的一个命令就是sort。不管是按字母排节目单、按数字排端口列表&#xff0c;还是把一堆重复行归拢起来做统计&#xff0c;sort基本几秒钟就能搞定。很多新手只会sort filename按字典序输出&#xff0c;没意识到它背后藏着一整套针对列排…

作者头像 李华
网站建设 2026/10/16 3:59:54

高精度减法详解:从字符串模拟到蓝桥杯实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华