当前位置: 首页 > 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.xdnf.cn/news/1119691.html

相关文章:

  • 深入浅出Kafka Consumer源码解析:设计哲学与实现艺术
  • gitlab-ci.yml
  • Spark 和 Hadoop MapReduce 的基本概念及区别
  • 代码随想录算法训练营第四十九天|单调栈part2
  • PHP password_verify() 函数
  • vue vxe-tree 树组件加载大量节点数据,虚拟滚动的用法
  • 【AutoCAD全网最新版】AutoCAD 2026 保姆级下载安装注册使用详细图文教程
  • 借助DeepSeek编写输出漂亮表格的chdb客户端
  • [源力觉醒 创作者计划]_文心大模型4.5开源部署指南:从技术架构到实战落地
  • sfe_py的应力云图计算与显示step by step
  • 【LeetCode240.搜索二维矩阵Ⅱ】以及变式
  • iOS高级开发工程师面试——RunLoop
  • C++类模版与友元
  • 大数据领域开山鼻祖组件Hadoop核心架构设计
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GithubProfies(GitHub 个人资料)
  • 编译器 VS 解释器
  • 电脑升级Experience
  • Linux操作系统之信号:信号的产生
  • 【C++进阶】---- 多态
  • 鹧鸪云:别墅光储项目方案设计的最终选择
  • 【Linux系统】进程切换 | 进程调度——O(1)调度队列
  • Linux:3_基础开发⼯具
  • 【Linux】基本指令详解(一) 树状文件结构、家目录、绝对/相对路径、linux文件类型
  • 使用systemctl命令控制软件的启动和关闭
  • 打破空间边界!Nas-Cab用模块化设计重构个人存储逻辑
  • 各种开发语言主要语法对比
  • Codeforces Round 1019 (Div. 2) A-D
  • GPU网络运维
  • UV vs Pip:Python 包管理的革命性进化
  • 【安卓笔记】进程和线程的基础知识