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.mzph.cn/bicheng/69169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第28章 测试驱动开发模式:深入绿条模式及相关技术

写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…

SpringAI基于API对大语言模型调用

引言 随着人工智能技术的迅猛发展,大型语言模型(LLM)在各个领域的应用越来越广泛。SpringAI作为一个旨在简化AI集成的框架,为开发者提供了高效、便捷的工具来连接和调用这些大模型。本文将详细探讨如何使用SpringAI整合通义千问等…

Python 在Word中添加、或删除超链接

在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超链接,用户可以轻松地导航到相关信息,从而增强文档的互动性和可读性。本文将介绍如何使用Python在Word中添加超链接、或删除Word文档中的超…

Spring 源码学习(七)——注解后处理器-2

五 InitDestroyAnnotationBeanPostProcessor 类 1 属性 InitDestroyAnnotationBeanPostProcessor 类用于处理初始化与销毁注解;其中第一个属性为用于标识初始化方法与销毁方法注解类型的 initAnnotationType 与 destroyAnnotationType 属性、还有一个用于标识执行顺…

概率论里的特征函数,如何用卷积定理去理解

概率论里的特征函数,如何用卷积定理去理解_哔哩哔哩_bilibili

Unity入门1

安装之后无法获得许可证,可以考虑重装 新建项目 单击空白处生成脚本 双击c#文件 会自动打开vstudio 检查引用 如果没有引用,重开vstu,或者重新加载项目 hierarchy层级 scenes场景 assets资产 inspector督察 icon图标 资源链接&…

如何跨互联网adb连接到远程手机-蓝牙电话集中维护

如何跨互联网adb连接到远程手机-蓝牙电话集中维护 --ADB连接专题 一、前言 随便找一个手机,安装一个App并简单设置一下,就可以跨互联网的ADB连接到这个手机,从而远程操控这个手机做各种操作。你敢相信吗?而这正是本篇想要描述的…

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧,属于独立按键模式(BTN模式),放在左侧为矩阵键盘模式(KBD模式) 整体结构是一端接地,一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…

第25篇 基于ARM A9处理器用C语言实现中断<一>

Q:怎样理解基于ARM A9处理器用C语言实现中断的过程呢? A:同样以一段使用C语言实现中断的主程序为例介绍,和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯&#xf…

Baklib如何提升企业的内容管理效率与协作能力

内容概要 在现代企业中,内容管理的有效性直接影响到工作效率、团队协作和创新能力。随着信息量的不断增加,企业亟需一个系统化的平台来高效处理和管理这些内容。Baklib作为一款先进的内容管理平台,通过其丰富的功能和灵活的应用场景&#xf…

debian12.9编译freeswitch1.10.12【默认安装】

服务器操作系统 cat /etc/os-release PRETTY_NAME"Debian GNU/Linux 12 (bookworm)" NAME"Debian GNU/Linux" VERSION_ID"12" VERSION"12 (bookworm)" VERSION_CODENAMEbookworm IDdebian HOME_URL"https://www.debian.org/&quo…

【2024年终总结】深圳工作生活评测

距离上次写年终总结已经过了一年半了,这一年半中哪怕经历了很多的事情,但是感觉又没发生什么。想写一些骚话,却总觉得自己无法完全表达,便也就这样,静静地记录下这一段时光。 现在是2025年,春节前的时光&am…

【算法】分治

分治 1.逆序对2.求第 k 小的数3.最大子段和4.地毯填补问题 分治,字面上的解释是「分而治之」,就是把一个复杂的问题分成两个或更多的相同的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 1.逆序对 P…

MongoDB 数据库备份和恢复全攻略

在当今数据驱动的时代,数据库的稳定运行和数据安全至关重要。MongoDB 作为一款流行的 NoSQL 数据库,以其灵活的文档模型和高扩展性备受青睐。然而,无论数据库多么强大,数据丢失的风险始终存在,因此掌握 MongoDB 的备份…

Vue2官网教程查漏补缺学习笔记 - 3Vue实例4模板语法5计算属性监听器

3 Vue实例 3.1 创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm new Vue({// 选项 })虽然没有完全遵循 MVVM 模型,但是 Vue 的设计也受到了它的启发。因此在文档中经常会使用 vm (ViewModel 的缩写) 这个变…

LabVIEW橡胶动态特性测试系统

本文介绍了一个利用LabVIEW软件和NI高速数据采集设备构建的橡胶动态特性测试系统。该系统实现了橡胶材料动态性能的精确测量,并通过虚拟仪器技术,提高了测试数据的处理效率和准确性。系统支持实时数据处理和多种信号的动态分析,适用于工业和科…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验六----流域综合处理(超超超详细!!!)

流域综合处理 流域综合治理是根据流域自然和社会经济状况及区域国民经济发展的要求,以流域水流失治理为中心,以提高生态经济效益和社会经济持续发展为目标,以基本农田优化结构和高效利用及植被建设为重点,建立具有水土保持兼高效生态经济功能的半山区流域综合治理模式。数字高程…

IOS 安全机制拦截 window.open

摘要 在ios环境,在某些情况下执行window.open不生效 一、window.open window.open(url, target, windowFeatures) 1. url:「可选参数」,表示你要加载的资源URL或路径,如果不传,则打开一个url地址为about:blank的空…

Java stream流的避坑指南

在使用Java Stream API时,虽然它提供了强大的功能来简化集合操作,但也存在一些常见的“坑”需要注意。以下是详细的避坑指南: 1. Stream的不可重用性 问题:Stream一旦被消费(如调用forEach、collect等终端操作&#…

对于RocksDB和LSM Tree的一些理解

LSM Tree的读写过程 HBase、LevelDB,rocksDB(是一个引擎)底层的数据结构是LSM Tree适合写多读少的场景,都是追加写入内存中的MemTable,写入一条删除(或修改)标记,而不用去访问实际的…