简述C语言算法,c语言概述-算法.ppt

本文介绍了C语言的发展历程,强调其简洁明了的特点,并详细讲解了C程序的基本构成,包括求两数之和的示例。还涵盖了程序设计的概念、算法表示及结构化编程思想。此外,通过实例演示了穷举法和求最大值问题的算法应用。
摘要由CSDN通过智能技术生成

c语言概述-算法

C语言程序设计 第一章 C语言程序设计 本章要点 C语言的特点 C语言的发展历史 C程序的结构 在计算机上运行C程序的方法 1.1 C语言的发展历史 1.2 C语言的特点 1.3 C语言程序的组成结构 例 2 求两数之和#include main( ) /*求两数之和*/{ int a,b,sum; /*定义变量为整型*/ a=123; /*变量赋值*/ b=456; sum=a+b; /*求和 */ printf(″sum is %d\n″,sum);} C程序的基本结构小结: 1.4 运行C程序的步骤和方法 2. C程序的开发环境 1.5 从三个方面学习C语言 第二章 C语言程序设计 本章要点 什么是程序设计 什么是算法,如何设计和表示算法 结构化程序设计的思想和方法 计算机语言分类 2.1 程序设计的基本概念 程序设计的步骤 1. 枚举法(穷举法) 特点:算法简单,容易理解,运算量大。 基本思想: 根据题目的部分条件确定答案的大致范围,然后在此范围内对所有可能的情况逐一验证,直到所有情况均通过验证。若某个情况符合题目条件,则为本题的一个答案;若全部情况验证完后均不符合题目的条件,则问题无解。 如: 百元买百鸡问题。假定小鸡每只0.5元,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,问共有几种购鸡方案? 根据题目设母鸡、公鸡、小鸡各为x,y,z只,列出方程为:x+y+z=100,3x+2y+0.5z=100 利用穷举法,将各种可能的组合一一测试,输出符合条件的组合。即在各个变量的取值范围内不断变化x,y,z的值,穷举x,y,z全部可能的组合,若满足方程组则是一组解。 #include "stdio.h" main() { int x,y,z; printf("母鸡 公鸡 小鸡"); for(x=0;x<=33;x++) for(y=0;y<=50;y++) {z=100-x-y; if((3*x+2*y+0.5*z)==100) printf(“\n%-6d %-6d %-6d”, x,y,z);} } #include "stdio.h" main() { int i,x; x=1; printf("第 7 天的桃子数为:1只\n"); for(i=6;i>=1;i--) { x=(x+1)*2; printf("第 %d 天的桃子数为:%d只",i,x); printf("\n"); } } 3.求最大值、最小值问题 采用如同打擂台的方法。 在n个数中,先假设第一个数为最大值,成为擂主,依次同第2,3,……n个数据逐一比较,一旦某个数大,马上替换擂主;所有值比较完,最大值也就获得。 求最小值问题则先假设第一个数为最小值。 如对输入的若干个学生成绩,求出最高分。 课程小结 C语言的特点 C程序的结构 算法初步 ① 将a、b、c和x的值输入到计算机; ② 判断x≤a?如果条件成立,执行第③步,否则执行第④步; ③ 按表达式bx+a2计算出结果存放到M中,然后执行第⑤步; ④ 按表达式a(c-x)+c2计算出结果存放到M中,然后执行第⑤步; ⑤ 输出M的值; ⑥ 算法结束。 这是用自然语言描述的算法 例2:有黑和蓝两个墨水瓶,但却错把黑墨水装在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水瓶子里,要求将其互换。 算法分析:这是一个非数值运算问题。因为两个瓶子的墨水不能直接交换,所以,解决这一问题的关键是需要引入第三个墨水瓶。设第三个墨水瓶为白色,其交换步骤如下: ①将蓝瓶中的黑墨水装入白瓶中 ②将黑瓶中的蓝墨水装入蓝瓶中 ③将白瓶中的黑墨水装入黑瓶中 ④交换结束 2.算法的基本特征 算法是一个有穷规则的集合,这些规则确定了解决某类问题的一个运算序列。 算法的基本特征: 有穷性:算法必须在执行有限个操作后终止; 确定性:算法中每一步的含义必须是确切的,不能出现任何二义性; 有效性:算法中的每一步操作都应该能有效执行,一个不可执行的操作是无效的; 有零个或多个输入:执行算法时,从外界获得必要的信息 ; 有一个或多个输出:算法的解就是输出。 3.算法的常用表示方法 可以用不同的方法表示算法,常用方法有: 自然语言 传统流程图 结构化流程图 (1)自然语言 自然语言即是使用汉语、英语或其他语言去描述算法。 [例]有50名学生的成绩,要求将他们之中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算法设计与分析》目录: 第一篇引入篇 第1章算法概述1.1用计算机求解问题与算法 1.1.1用计算机求解问题的步骤 1.1.2算法及其要素和特性 1.1.3算法设计及基本方法 1.1.4从算法到实现 1.2算法描述 1.2.1算法描述简介 1.2.2算法描述约定 1.2.3一个简单问题的求解过程 1.3现代常用算法概览* 1.3.1压缩算法 1.3.2加密算法 1.3.3人工智能算法 1.3.4并行算法 1.3.5其他实用算法 第2章算法分析基础 2.1算法分析体系及计量 2.1.1算法分析的评价体系 2.1.2算法的时间复杂性 2.1.3算法的空间复杂性 2.1.4NP完全性问题 2.2算法分析实例 2.2.1非递归算法分析 2.2.2递归算法分析 2.2.3提高算法质量 第二篇基础篇 第3章算法基本工具和优化技巧3.1循环与递归 3.1.1循环设计要点 3.1.2递归设计要点 3.1.3循环与递归的比较 3.2算法与数据结构 3.2.1原始信息与处理结果的对应存储 3.2.2数组使信息有序化 3.2.3数组记录状态信息 3.2.4大整数存储及运算 3.2.5构造趣味矩阵 3.3优化算法的基本技巧 3.3.1算术运算的妙用 3.3.2标志量的妙用 3.3.3信息数字化 3.4优化算法的数学模型 3.4.1杨辉三角形的应用 3.4.2最大公约数的应用 3.4.3公倍数的应用 3.4.4斐波那契数列的应用 3.4.5递推关系求解方程 习题 第三篇核心篇 第4章基本的算法策略4.1迭代算法 4.1.1递推法 4.1.2倒推法 4.1.3迭代法解方程 4.2蛮力法 4.2.1枚举法 4.2.2其他范例 4.3分治算法 4.3.1分治算法框架 4.3.2二分法 4.3.3二分法变异 4.3.4其他分治方法 4.4贪婪算法 4.4.1可绝对贪婪问题 4.4.2相对或近似贪婪问题 4.4.3贪婪策略算法设计框架 4.5动态规划 4.5.1认识动态规划 4.5.2动态规划算法设计框架 4.5.3突出阶段性的动态规划应用 4.5.4突出递推的动态规划应用 4.6算法策略间的比较 4.6.1不同算法策略特点小结 4.6.2算法策略间的关联 4.6.3算法策略侧重的问题类型 习题 第5章图的搜索算法 5.1图搜索概述 5.1.1图及其术语 5.1.2图搜索及其术语 5.2广度优先搜索 5.2.1算法框架 5.2.2广度优先搜索的应用 5.3深度优先搜索 5.3.1算法框架 5.3.2深度优先搜索的应用 5.4回溯法 5.4.1认识回溯法 5.4.2回溯法算法框架 5.4.3应用1——基本的回溯搜索 5.4.4应用2——排列及排列树的回溯搜索 5.4.5应用3——最优化问题的回溯搜索 5.5分支限界法 5.5.1分支搜索算法 5.5.2分支限界搜索算法 5.5.3算法框架 5.6 图的搜索算法小结 习题 第四篇应用篇 第6章算法设计实践6.1循环赛日程表 6.2求3个数的最小公倍数 6.3猴子选大王 6.4最大子段和问题 6.5背包问题 6.5.1与利润无关的背包问题 6.5.2与利润有关的背包问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值