C语言-02 算法-程序的灵魂

news2024/9/20 20:48:22

算法-程序的灵魂

  • 1、程序=算法+数据结构
  • 2、什么是算法
  • 3、简单的算法举例
  • 4、算法的特性
  • 5、怎样表示一个算法
    • 5.1 用自然语言表示算法
    • 5.2 用流程图表示算法
    • 5.3 三种基本结构和改进的流程图
    • 5.4 用N-S流程图表示算法
    • 5.5 用伪代码表示算法
    • 5.6 用计算机语言表示算法
  • 6、结构化程序设计方法

1、程序=算法+数据结构

 
  在计算机科学中,程序是由算法和数据结构组成的。算法是解决问题的步骤,而数据结构则是存储和组织数据的方式。两者紧密结合,共同决定了程序的效率和功能。

2、什么是算法

 
  算法是指解决特定问题的一系列步骤或规则。它描述了如何从输入得到输出,并且必须在有限的步骤内完成。算法的关键在于正确性、效率和可维护性。

3、简单的算法举例

 
以计算两个数的最大公约数为例,经典的欧几里得算法步骤如下:

  • 1:给定两个正整数 ab
  • 2:如果 b 为 0,则 a 即为最大公约数。
  • 3:否则,计算 a % b 并将结果赋值给 b
  • 4:交换 ab 的值,重复步骤 2 和 3,直到 b 为 0。

4、算法的特性

 
一个好的算法应具有以下特性:

  • 有穷性:算法必须在有限的步骤内结束。
  • 确定性:算法的每一步骤必须明确、无歧义。
  • 输入:算法应有0个或多个输入。
  • 输出:算法应有一个或多个输出。
  • 可行性:算法的每一步骤都应是可行的,能够通过有限的操作实现。

5、怎样表示一个算法

5.1 用自然语言表示算法

 
  自然语言描述算法直观易懂,但容易产生歧义。适用于简单的算法描述,例如前述的欧几里得算法。

5.2 用流程图表示算法

 
  流程图通过图形表示算法的执行流程,每个步骤用方框或其他形状表示,流程用箭头连接。流程图清晰直观,适合表达算法的整体结构。
        在这里插入图片描述

5.3 三种基本结构和改进的流程图

 
流程图通常由三种基本结构构成:

  • 顺序结构:按步骤顺序执行。
  • 选择结构:根据条件执行不同分支。
  • 循环结构:重复执行某些步骤。

通过这些基本结构,可以绘制出更加复杂的流程图来表示复杂算法。

5.4 用N-S流程图表示算法

 
  Nassi-Shneiderman(N-S)流程图是另一种表示算法的方法。它使用嵌套矩形来表示算法的控制结构。N-S流程图比传统流程图更加结构化,更能体现程序设计的层次。
  示例:
 
在这里插入图片描述

5.5 用伪代码表示算法

 
  伪代码是一种介于自然语言和编程语言之间的表示方法。它没有固定的语法规则,更注重描述算法的逻辑步骤。伪代码简洁明了,便于转换成实际代码。例如,用于计算一个整数数组的最大值的伪代码:

Function FindMax(Array, n)
    max = Array[0]
    For i = 1 to n-1 Do
        If Array[i] > max Then
            max = Array[i]
        End If
    End For
    Return max
End Function

这个伪代码的功能是遍历一个数组 Array,并找到其中的最大值。n表示数组的元素数量,max用于存储当前找到的最大值。

5.6 用计算机语言表示算法

 
  算法可以用计算机语言来表示。这是最直接的表示方式,也就是将算法转换成可执行的程序代码。以C语言为例,实现上面的阶乘算法:

#include <stdio.h>

int FindMax(int array[], int n) {
    int max = array[0]; // 初始化最大值为数组的第一个元素

    for (int i = 1; i < n; i++) { // 从第二个元素开始遍历数组
        if (array[i] > max) { // 如果当前元素大于当前最大值
            max = array[i];   // 更新最大值
        }
    }

    return max; // 返回找到的最大值
}

int main() {
    int n;
    printf("Enter the number of elements: "); // 提示用户输入数组元素的数量
    scanf("%d", &n); // 获取用户输入的数组元素数量

    int array[n];
    printf("Enter the elements:\n"); // 提示用户输入数组元素
    for (int i = 0; i < n; i++) {
        scanf("%d", &array[i]); // 获取用户输入的数组元素
    }

    int max = FindMax(array, n); // 调用函数计算数组中的最大值
    printf("The maximum value is: %d\n", max); // 输出最大值

    return 0; // 程序结束
}

6、结构化程序设计方法

 
  结构化程序设计方法是指通过使用顺序、选择和循环三种基本结构,设计出清晰、易理解和维护的程序。C语言本身非常适合结构化程序设计,通过合理使用函数、循环和条件语句,可以编写出结构良好的代码。
 
举例:计算数组元素的平均值
 
  结构化程序设计的一个简单例子是计算数组中元素的平均值。该程序将输入一个整数数组,然后输出其平均值。

#include <stdio.h>

int main() {
    int n, i; // 声明整型变量 n 和 i
    double sum = 0.0, average; // 声明并初始化 sum 为 0.0,声明 average 变量

    printf("Enter the number of elements: "); // 提示用户输入元素数量
    scanf("%d", &n); // 获取用户输入的元素数量并存储在 n 中

    double array[n]; // 声明一个大小为 n 的 double 类型数组
    for (i = 0; i < n; i++) { // 循环遍历数组
        printf("Enter element %d: ", i + 1); // 提示用户输入第 i+1 个元素
        scanf("%lf", &array[i]); // 获取用户输入的元素并存储在数组中
        sum += array[i]; // 将输入的元素值累加到 sum
    }

    average = sum / n; // 计算平均值
    printf("Average = %.2lf\n", average); // 输出平均值,保留两位小数

    return 0; // 程序结束,返回 0 表示成功执行
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2075435.html

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

相关文章

秋冬春夏,纪念在CSDN的第365天

目录 时光 收获 工作 生活 憧憬 时光 再次收到创作纪念日的消息时&#xff0c;已在CSDN创作和度过了一年的时光。创作&#xff0c;成了自己的第二工作空间&#xff0c;成为了日常的一种习惯。 每当看到第1篇文章的提醒消息&#xff0c;都会想起当时创作的初衷和情景。是一…

学了PMP能给我们带来什么变化?

一、PMP是什么 PMP(Project Management Professional)是一个在项目管理领域具有高级认证的资格。该认证由PMI在全球200多个国家和地区广泛推广&#xff0c;被认为是项目管理领域内最具含金量的认证之一。 持有PMP证书的项目经理不仅可以提升其项目管理能力&#xff0c;同时也…

LLaMA代码笔记 --基于lit-llama

代码来自&#xff1a;lit-llama modelscope模型下载 &#xff1a;llama-7b 下载后的模型需要转换为lit-llama使用的格式&#xff0c;详见 howto 文件夹下的 download_weights.md 文中代码为了方便说明&#xff0c;删减了一些内容&#xff0c;详细代码请查看源码。 generate …

磁场强度H和磁感应强度B,磁化强度M和磁极化强度J

磁场强度H、磁感应强度B、磁化强度M和磁极化强度J是四个非常重要的磁学基本概念&#xff0c;他们之间关联但有时又很容易混淆。分清这四个概念对于磁材行业从业者是非常重要的&#xff0c;今天我们就为大家细说一下它们的概念和关系。 磁场强度H 磁场强度H其实是一个没有实际…

自动化巨头施耐德电气,部分业务被其供应商收购:之前还收购过霍尼韦尔

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 供应商逆袭&#xff1a;小鱼吃大鱼的商业奇迹 英国电气行业掀起一阵惊涛骇浪。斯塔福德郡的中型企业Goodfish Group竟然收购了全球巨头施耐德电气…

AppInventor2 现已全面支持安卓14!

//重磅升级&#xff1a;支持安卓14// MIT于2024/08/19升级Android SDK至34&#xff08;安卓14&#xff09;&#xff0c;因为在 2024 年 8 月 31 日之后&#xff0c;在 Google Play 商店中添加或更新应用时必须执行此更新。 国内估计也会跟进&#xff0c;因此使用最新版本的 s…

CleanMyMac如何帮助用户清空DNS缓存,Mac清除dns缓存命令

什么是DNS缓存&#xff1f;这个缓存有什么危害&#xff1f;相信大家平时使用浏览器时&#xff0c;有时候会遇到一个很奇怪的问题&#xff0c;就是Mac打开许多网站如百度网站&#xff0c;都是可以访问的&#xff0c;但是在打开某个特定网站时&#xff0c;却发现浏览器提示检测不…

网上商城|基于SprinBoot+vue的分布式架构网上商城系统(源码+数据库+文档)

分布式架构网上商城系统 目录 基于SprinBootvue的分布式架构网上商城系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…

Halcon根据灰度特征值选择区域

Halcon根据灰度特征值选择区域 与select_shape算子类似&#xff0c;灰度值图像也可以快捷地根据特征值选择符合设定条件的区域。select_gray算子用于实现这一功能&#xff0c;该算子能接受一组区域作为输入&#xff0c;然后根据选定的特征计算其是否满足特定的条件。当所有区域…

网络安全 DVWA通关指南 DVWA File Upload(文件上传)

DVWA File Upload&#xff08;文件上传&#xff09; 文章目录 DVWA File Upload&#xff08;文件上传&#xff09;修复建议 LowMediumHighImpossible 修复建议 1、使用白名单限制可以上传的文件扩展名 2、注意0x00截断攻击&#xff08;PHP更新到最新版本&#xff09; 3、对上传…

【系统安全】Kernel Streaming WOW Thunk 服务驱动程序特权提升漏洞(CVE-2024-38054)

文章目录 前言一、漏洞概述二、影响范围三、漏洞复现四、修复方法前言 安全研究员 “Frost” 发布了CVE-2024-38054漏洞的概念验证漏洞利用代码,这加剧了人们对最近修补的 Windows 安全漏洞的担忧。内核流 WOW Thunk 服务驱动程序中的这个高严重性漏洞可能使本地攻击者能够通…

【赵渝强老师】使用Docker Machine远程管理Docker

Docker Machine是Docker官方提供的一个远程管理工具。通过使用Docker Machine&#xff0c;可以帮助开发人员在远程主机上安装Docker&#xff1b;或者在远程的虚拟主机上直接安装虚拟机并在虚拟机中安装Docker。Docker Machine还提供了相应的命令来管理这些远程的Docker环境和虚…

四川财谷通信息技术有限公司引领新风尚

在数字经济蓬勃发展的今天&#xff0c;电子商务已成为推动经济增长的重要引擎之一。而在这股浪潮中&#xff0c;短视频平台抖音凭借其庞大的用户基数和高度活跃的社区氛围&#xff0c;为无数小微企业和个人创业者提供了前所未有的发展机遇。四川财谷通信息技术有限公司&#xf…

如何防止图纸外泄?图纸安全管理措施有哪些(必备清单)

当今数字化和信息化的时代&#xff0c;图纸作为企业设计、制造等环节中的重要资料&#xff0c;其安全性尤为重要。图纸的泄露不仅可能导致企业的技术秘密被竞争对手获取&#xff0c;还可能造成巨大的经济损失和法律纠纷。因此&#xff0c;建立健全的图纸安全管理措施是每个企业…

虚幻5|音效设置—环境音效,低血量和恢复血量音效,音效衰减,脚步音效

一&#xff0c;环境音效——学习使用SoundCue 1.打开主界面 拖入一个环境音效 2.选择一个音效&#xff0c;但这个音效围绕整个环境的&#xff0c;设置听听就行了 听完后删掉&#xff0c;我们要设置一个有一定范围的音效 3.找到存放音效的文件&#xff0c;创建一个音频SoundC…

【机器学习西瓜书学习笔记——强化学习】

机器学习西瓜书学习笔记【第十六章】 第十六章 强化学习16.1 任务与奖赏四种主要的机器学习方式马尔可夫决策过程 16.2 K K K-摇臂赌博机探索与利用$\epsilon $-贪心 S o f t m a x Softmax Softmax 16.3 有模型学习策略评估策略改进策略迭代与值迭代 16.4 免模型学习蒙特卡罗…

电商渠道有效的治理方法和流程

在当今消费模式不断推陈出新的时代&#xff0c;品牌为了紧跟市场潮流&#xff0c;持续拓展销售途径。从传统的电商平台到新兴的直播带货、社区团购以及到家服务平台&#xff0c;多样化的线上渠道为品牌销售开辟了广阔天地。然而&#xff0c;机遇与挑战总是相伴相生&#xff0c;…

开发者社区✖️外滩大会「创新者舞台」——《特斯拉,不止于车》

备受瞩目的“2024 Inclusion外滩大会”将于2024年9月5日至7日在上海黄浦世博园区盛大开幕。 外滩大会云集了蚂蚁集团、清华大学、复旦大学、上海交通大学、同济大学、浙江大学、上海报业集团、外滩投资集团等在学术界和产业界享有科技盛誉的组织。 大会将延续 “科技创造可持续…

合作文章(IF=7.7)|非靶+靶向+16S +RNA-Seq探究广东虫草对非酒精性脂肪肝的功效

研究背景 肥胖症的持续增长已成为一个全球性的公共卫生问题&#xff0c;世界卫生组织(WHO)报告称&#xff0c;全球超过八分之一的人患有肥胖症。目前&#xff0c;全球范围内代谢功能障碍相关脂肪性肝病(MASLD)&#xff0c;以前被称为非酒精性脂肪性肝病(NAFLD)&#xff0c;随着…

【CTF Reverse】CTFShow re2 Writeup(反编译+XOR+RC4)

re2 30 感谢W22提供的题目 工具 RC4 加密/解密 - 在线工具 https://www.toolhelper.cn/SymmetricEncryption/RC4 解法 解压压缩包。 txt 文件里是乱码。 exe 文件导入 DIE 分析。是一个 PE32 程序。 导入 IDA&#xff0c;按 F5 查看 main_0 函数伪代码。 int __cdecl main_…