当前位置: 首页 > news >正文

四、三种基本程序结构

1、程序结构

(1)在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构。

  • 顺序结构:按照事务本身特性,必须一个接着一个来完成。
  • 选择结构:到某个节点后,会根据一次判断结果来决定之后走哪一个分支。
  • 循环结构:循环结构有一个循环体,循环体是一段代码。循环结构根据判断的结果,来决定循环体是否执行。

(2)对于顺序结构来说,不需判断,因为下一句指令就是你要执行的。对于循环与选择结构来说,都需要进行判断,然后根据判断结果来做出决定。

(3)逻辑上有一种类型,叫bool类型(又写作boolean类型,中文叫布尔类型)。布尔类型只有两个值,真和假。

2、选择结构

2.1、 if...else 语句

(1)if...else 可以多级嵌套。

(2)示例伪代码:

if(bool)
{/* 如果布尔值真将执行的语句 */
}
else
{/* 如果布尔值为假将执行的语句 */
}

2.2、switch 语句

(1) switch 语句中可以嵌套 if...else 语句。

(2)示例伪代码:

switch (变量)                    
{                              case 常数1:                /* 变量等于常数1*/                break;case 常数2:                /* 变量等于常数2*/   break;..... default:/* 变量不等于任何以上常数 */break;
}

(3)说明

  • case中必须是常数,而且必须是整形。
  • 一般来说,每个case中代码段后都必须有一个break;用于终止switch语句。
  • case之后一般都会有default(默认)。语法上允许没有default,但是建议写代码时一定要写。

2.3、对比

(1)if...else 适合判断条件比较复杂,但是分支比较少的情况;switch适合适合判断条件不复杂,但是分支比较多的情况。

(2)所有的选择结构,其实都可以用 if...else 来实现,但只有部分才能用 switch来实现。一般的做法是:在适合使用switch的情况下优先使用switch,如果不合适再用if...else。

3、循环结构

        C语言中常用的循环结构有3个:for循环、while循环、do while循环。

3.1、for循环

(1)示例代码:

for ( int i = 0; i < 100; i++)
{//循环体代码
}

(2)for循环解析:

  1. int i = 0;。 会首先被执行,且只会执行一次。这一步声明并初始化循环控制变量;也可以不在这写出任何语句,只要留出一个分号即可。
  2. 执行判断语句 i < 100;。 如果为真,则执行循环体;如果为假,则不执行循环体且循环结束。
  3. 执行完for循环体后,执行 i++ 。这里可以更改循环控制变量。该语句可以留空,只要在条件语句后出现一个分号即可。
  4. 再次执行条件语句 i < 100;。依次循环......

3.2、while循环

(1)示例伪代码

while(bool)
{循环体
}

(2)while循环解析

  1. 判断bool条件。
  2. 如果为真,则执行循环体,然后跳转到第1步;如果为假,循环结束。

3.3、do while循环

(1)示例伪代码

do
{循环体
}while(bool)

(2)do...while解析

  1. 执行循环体。
  2. 判断bool条件。如果为真,跳转到第1步;如果为假,循环结束。

3.3、对比

(1)for 循环能实现的 while 循环也一定能实现。

(2)while循环的初始化循环控制变量在while循环前编写,更改循环控制变量在循环体中编写。因此代码的整体可读性、整齐性没有for循环好。除了死循环不建议用while循环。

(3)while循环和do while循环的不同:while循环是先判断后执行,do while循环是先执行后判断。do while循环的循环体至少会执行一次,等循环开始转了之后,其实都一样。

http://www.lryc.cn/news/218865.html

相关文章:

  • 深入理解元素的高度、行高、行盒和vertical-align
  • 什么叫储能能量管理单元EMU?储能能量管理单元EMU功能?储能EMU是什么?储能能量管理系统如何实现一次调频AGC-AVC功能?
  • 机器学习之决策树
  • 聊聊logback的UNDEFINED_PROPERTY
  • 记一次pdjs时安装glob出现,npm ERR! code ETARGET和npm ERR! code ELIFECYCLE
  • Zabbix如何监控腾讯云NAT网关
  • SpringBoot案例(数据层、业务层、表现层)
  • 交叉编译程序:以 freetype 为例
  • spring-cloud-starter-dubbo不设置心跳间隔导致生产者重启no Provider问题记录
  • 【数据结构】败者树的建树与比较过程
  • GlobalMapper---dem生成均匀分布的网格,或者均匀分布的点高程点
  • k8s系列文章一:安装指南
  • Pod 进阶
  • Proteus仿真--12864LCD显示计算器键盘按键实验(仿真文件+程序)
  • pam_radius库的使用
  • qt6:无法使用setFontColor
  • 竞赛 深度学习疫情社交安全距离检测算法 - python opencv cnn
  • 无声的世界,精神科用药并结合临床的一些分析及笔记(十)
  • 构建强大的Web应用之Django详解
  • Linux 之搭建 arm 的 qemu 模拟器
  • uinapp微信小程序隐私政策授权
  • 使用Java工作流简单介绍
  • 数字媒体技术基础之:ICC 配置文件
  • 解析SD-WAN组网方式及应用场景,全面了解典型案例
  • 中小学智慧校园电子班牌管理系统源码
  • 日常踩坑-[sass]Error: Expected newline
  • UI设计感蓝色商务数据后台网站模板源码
  • 二、计算机组成原理与体系结构
  • MySQL-sql的优化
  • 一致性哈希在分库分表的应用