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

C语言程序设计:算法程序的灵魂

文章目录

  • C语言程序设计:算法程序的灵魂
    • 算法+数据结构=程序
      • 数据结构
      • 算法
      • 数值运算算法
      • 非数值运算算法
    • 简单的算法举例
        • 【例2.1】求1×2×3×4×5
        • 【例2.2】有50个学生,要求输出成绩在80分以上的学生的学号和成绩
      • 简单的算法举例
        • 【例2.3】判定2000—2500年中的每一年是否为闰年,并将结果输出
        • 算法步骤
        • 【例2.4】求 1−1/2+1/3−1/4+⋯+1/99−1/100
        • 【例2.5】给出一个大于或等于3的正整数,判断它是不是一个素数
      • 算法的特性
    • 算法的表示
      • 用流程图表示算法
        • 算法的流程图表示举例
        • 【例2.6】将例2.1的算法用流程图表示。 求1×2×3×4×5。
        • 【例2.7】例2.2的算法用流程图表示。 有50个学生,要求输出成绩在80分以上的学生的学号和成绩。
      • 传统流程图的弊端
    • 三种基本结构
      • 三种基本结构的特点
      • 用N-S流程图表示算法
      • 用伪代码表示算法
        • 【例2.16】求5!,用伪代码表示。
        • 【例2.18】将例2.16表示的算法(求5!)用C语言表示。
      • 结构化程序设计方法
    • 结语

C语言程序设计:算法程序的灵魂

算法+数据结构=程序

数据结构

对数据的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。

算法

对操作的描述。即要求计算机进行操作的步骤。广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。对同一个问题,可以有不同的解题方法和步骤。为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。

在这里插入图片描述

数值运算算法

数值运算的目的是求数值解。由于数值运算往往有现成的模型,可以运用数值分析方法,因此对数值运算的算法的研究比较深入,算法比较成熟。

非数值运算算法

计算机在非数值运算方面的应用远超在数值运算方面的应用。非数值运算的种类繁多,要求各异,需要使用者参考已有的类似算法,重新设计解决特定问题的专门算法。

简单的算法举例

【例2.1】求1×2×3×4×5

在这里插入图片描述

若题目改为: 求1×3×5×7×9×11

在这里插入图片描述

用这种方法表示的算法具有一般性、通用性和灵活性。

【例2.2】有50个学生,要求输出成绩在80分以上的学生的学号和成绩

在这里插入图片描述

在这里插入图片描述

简单的算法举例

【例2.3】判定2000—2500年中的每一年是否为闰年,并将结果输出

在这里插入图片描述

算法步骤

在这里插入图片描述

【例2.4】求 1−1/2+1/3−1/4+⋯+1/99−1/100

在这里插入图片描述

在这里插入图片描述

【例2.5】给出一个大于或等于3的正整数,判断它是不是一个素数

解题思路: 所谓素数(prime),是指除了1和该数本身之外,不能被其他任何整数整除的数。

在这里插入图片描述

实际上,n不必被2(n-1)之间的整数除,只须被2n/2间整数除即可,甚至只须被2~√n之间的整数除即可。

算法的特性

在这里插入图片描述

算法的表示

在这里插入图片描述

用流程图表示算法

在这里插入图片描述

算法的流程图表示举例
【例2.6】将例2.1的算法用流程图表示。 求1×2×3×4×5。

在这里插入图片描述

在这里插入图片描述

【例2.7】例2.2的算法用流程图表示。 有50个学生,要求输出成绩在80分以上的学生的学号和成绩。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

####【例2.9】将例2.4的算法用流程图表示。 求 1−1/2+1/3−1/4+⋯+1/99−1/100

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

传统流程图的弊端

在这里插入图片描述

传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。

三种基本结构

在这里插入图片描述

三种基本结构的特点

在这里插入图片描述

用N-S流程图表示算法

在这里插入图片描述

用伪代码表示算法

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章一样,自上而下地写下来。每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法(即程序)过渡。

【例2.16】求5!,用伪代码表示。

在这里插入图片描述

在这里插入图片描述

【例2.18】将例2.16表示的算法(求5!)用C语言表示。

在这里插入图片描述

在这里插入图片描述

结构化程序设计方法

在这里插入图片描述

结语

需项目源码文档等资料/商业合作/交流探讨等可以添加下面个人名片进行源码文档等获取,后续有时间会持续更新更多优质项目内容,感谢各位的喜欢与支持!

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

相关文章:

  • openlayer getLayerById 根据id获取layer图层
  • 在 vscode + cmake + GNU 工具链的基础上配置 JLINK
  • react antd点击table单元格文字下载指定的excel路径
  • 01-AD工具使用
  • centos7 配置国内镜像源安装 docker
  • Java设计模式 十八 状态模式 (State Pattern)
  • PyTorch张量操作reshape view permute transpose
  • RabbitMQ5-死信队列
  • macOS使用LLVM官方发布的tar.xz来安装Clang编译器
  • 【算法学习】归并排序算法思想的应用—求逆序对数量
  • 一组开源、免费、Metro风格的 WPF UI 控件库
  • Spring Security 应用详解
  • 业务对象和对象的区别
  • 81,【5】BUUCTF WEB [b01lers2020]Life on Mars
  • 华硕笔记本装win10哪个版本好用分析_华硕笔记本装win10专业版图文教程
  • Linux进程 -fork(初识),进程状态和进程优先级
  • 数据从前端传到后端入库过程分析
  • macOS如何进入 Application Support 目录(cd: string not in pwd: Application)
  • 第38周:猫狗识别 (Tensorflow实战第八周)
  • 【2024年华为OD机试】 (A卷,200分)- 计算网络信号、信号强度(JavaScriptJava PythonC/C++)
  • 【go语言】数组和切片
  • 2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)
  • 使用 Docker Compose 一键启动 Redis、MySQL 和 RabbitMQ
  • 新增自定义数据功能|UWA Gears V1.0.7
  • docker 简要笔记
  • 在Ubuntu上使用Apache+MariaDB安装部署Nextcloud并修改默认存储路径
  • 【JavaEE】-- 计算机是如何工作的
  • 政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI
  • 基于微信小程序的网上订餐管理系统
  • 科技快讯 | 理想官宣:正式收费!WeChat 港币钱包拓宽商户网络;百川智能发布深度思考模型Baichuan-M1-preview