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

C语言-流程控制

流程控制

算法

著名计算机科学家沃斯提出了一个公式:

程序 = 数据结构 + 算法
  • **数据结构:**对数据的描述
  • **算法:**对操作步骤的描述

算法的定义

广义的来说,为解决一个问题而采取的方法和有限的步骤,就称为“算法”

例如:

​ 将大象放入冰箱的算法就可以如下描述:

​ 打开冰箱门 → 把大象装进去 → 关闭冰箱门

算法特征

  • 有穷性:包含有限的操作步骤,不能无限制的执行下去。
  • 可行性:算法中每一天指令必须是切实可执行的。
  • 确定性:算法中每一条指令必须有确切的含义,不能产生歧义。

算法描述-流程图

案例

  • 要求:对于计算 s=1+2+3+4+5+6+7+8+9+10(累加求和)

  • 用流程图表示:

程序的三种基本结构(重点)

程序的三种基本结构包括顺序结构、分支结构(条件结构、选择结构)、循环结构(重复结构)

顺序结构

**特点:**各操作是按先后顺序执行的,是最简单的一种结构,这个结构是程序默认的。

其中A和B两个框是顺序执行的。也就是在A框所指定的操作后,必然接着执行B框所指定的操作。

分支结构

**特点:**根据是否满足给定的条件而从一组、两组、或者多组操作中选择一种进行执行。

-

  • 如果P条件成立,就执行A操作,否则跳过这个结构。
  • 无论会不会执行A操作,分支都会结束

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 无论P条件是否成立,A操作或者B操作中总有一个会执行。
  • 无论执行完哪一个分支,分支都会结束

分支结构又分为:

① 单分支

② 双分支

③ 多分支

循环结构

**特点:**在满足一定条件下,反复执行某一部分操作,有两种类型:

当型循环

图示:

执行过程:

当给定条件P成立时,执行S操作,然后再判断P条件是否成立,如果仍然成立,再执行S操作,然后再判断…,如此反复,直到某一次P条件不成立为止,此时不再执行S,结束循环。

特点:

先判断,后执行,循环体(S)有可能一次都不执行。

代表:

while、for

直到型循环

图示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行过程:

执行S操作,然后判断条件P是否成立,如果成立,再执行S操作,然后再判断,……,如此反复,直到某一次P条件不成立不再执行S,结束循环。

特点:

先执行,后判断,循环体(S)最少执行一次。

代表:

do…while

C语句

定义

  • C程序是以函数为基础单位的
  • 一个函数的执行部分是由若干条语句构成的。
  • C语句都是用来完成一定的操作任务。
  • C语句必须依赖于函数存在

C程序结构

C语句分类

1. 控制语句

作用:用来完成一定的控制功能

举例:

if…else…、for…、while…、do…while、continue、break、switch、return、goto

2. 函数调用语句

由一个函数调用+分号组成,例如:

 printf("这是一个函数调用语句");test();
3. 表达式语句

由一个表达式+分号组成,最典型的表达式语句就是赋值语句,例如:

 a = 3        // 表达式score >= 90  // 表达式score = 90;  // 表达式语句    
4. 空语句

只有一个分号,什么都不做,例如:

 ;for(;;)
5. 复合语句

用{…}括起来的若干个语句,例如:

 {z = z +y;t = z / 100;printf("%f\n",t);// 超过1条语句就是复合语句}

都不做,例如:

 ;for(;;)
http://www.lryc.cn/news/587614.html

相关文章:

  • 详解从零开始实现循环神经网络(RNN)
  • 使用 keytool 在服务器上导入证书操作指南(SSL 证书验证错误处理)
  • kafka的部署
  • Android系统的问题分析笔记 - Android上的调试方式 bugreport
  • 论文阅读:WildGS-SLAM:Monocular Gaussian Splatting SLAM in Dynamic Environments
  • 深入浅出Kafka Consumer源码解析:设计哲学与实现艺术
  • Angular 框架下 AI 驱动的企业级大前端应用开
  • Kafka 时间轮深度解析:如何O(1)处理定时任务
  • 【Python】-实用技巧5- 如何使用Python处理文件和目录
  • 计算机网络通信的相关知识总结
  • 基于GA遗传优化的多边形拟合算法matlab仿真
  • vscode/cursor怎么自定义文字、行高、颜色
  • PHP password_hash() 函数
  • 仓储智能穿梭车:提升仓库效率50%的自动化核心设备
  • Ubuntu系统下Conda的详细安装教程与Python多版本管理指南
  • 【软件架构】软件体系结构风格实现
  • I2C设备寄存器读取调试方法
  • 卷绕/叠片工艺
  • React源码3:update、fiber.updateQueue对象数据结构和updateContainer()中enqueueUpdate()阶段
  • 新手向:Python自动化办公批量重命名与整理文件系统
  • 理解:进程、线程、协程
  • LLM表征工程还有哪些值得做的地方
  • python的小学课外综合管理系统
  • 我对muduo的梳理以及AI的更改
  • MFC UI表格制作从专家到入门
  • LeetCode经典题解:206、两数之和(Two Sum)
  • 018 进程控制 —— 进程等待
  • 算法训练营day18 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
  • B站自动回复工具(破解)
  • 项目一第一天