《C语言》课程教学课件(PPT讲稿)第7章 常用基本算法的C语言实现

第7章常用基本算法的C语言实现 7.1统计与计数问题算法 7.2累加/累乘求和与求积问题算法 7.3解决不确定性问题的穷举算法 4排序问题算法 7.4 5数值积分算法 7.6多项式计算问题算法 7.7非线性方程求解问题算法 7.8产生随机数算法
第7章 常用基本算法的C语言实现 7.1统计与计数问题算法 7.2 累加/累乘求和与求积问题算法 7.3 解决不确定性问题的穷举算法 7.4排序问题算法 7.5数值积分算法 7.6多项式计算问题算法 7.7非线性方程求解问题算法 7.8产生随机数算法

7.1统计与计数问题算法 统计与计数问题应用比较普遍,一般方法 是:设定一个计数器变量 count,初值为0 每获得一个数据,进行必要判断后,若满足 统计条件,则计数器变量 count加1,这样当 对所有数据进行判断后,计数器变量 count的 值就是统计的结果。 【例7.1】输入若干非0实数,统计其中正 数的个数,负数的个数。遇到0时结束。 分析:设两个计数器变量n和m,n用于统 计正数的个数,m用于统计负数的个数
7.1统计与计数问题算法 统计与计数问题应用比较普遍,一般方法 是:设定一个计数器变量count,初值为0, 每获得一个数据,进行必要判断后,若满足 统计条件,则计数器变量count加1,这样当 对所有数据进行判断后,计数器变量count的 值就是统计的结果。 【例7.1】输入若干非0实数,统计其中正 数的个数,负数的个数。遇到0时结束。 分析:设两个计数器变量n和m,n用于统 计正数的个数,m用于统计负数的个数

#include main( i int n, m double x n=0,m=0; printf("please input real numbers: n ") scanf(%lf " &x) while(x!=0) {if(x>0)n++ else m++ scanf(%lf " &a) printf("plus=%d, negative=%dn",n,m) Return
#include main( ) { int n,m; double x; n=0; m=0; printf("please input real numbers:\n "); scanf("%lf ",&x); while(x!=0) {if(x>0) n++; else m++ scanf("%lf ",&a); } printf("plus=%d,negative=%d\n ",n,m); } [Return]

7.2累加/累乘求和与求积问题算法 求解累加和问题时,存放求和结果的变量(例如 sum)初值一般为0,采用循环的方式获取数据,每 循环一次,求和变量累加一个数据,最后求和变量的 值即为这些数据累加的和。 求解累乘问题时,存放乘积结果的变量(例如 mul)初值一般为1,将每次获取的待累乘的数据依次 连乘到乘积结果变量,最后乘积变量的值即为这些数 据连乘的积。 例7.3】输入n个整数,计算并输出平均成绩, 要求输出精确到两位小数
7.2 累加/累乘求和与求积问题算法 求解累加和问题时,存放求和结果的变量(例如 sum)初值一般为0,采用循环的方式获取数据,每 循环一次,求和变量累加一个数据,最后求和变量的 值即为这些数据累加的和。 求解累乘问题时,存放乘积结果的变量(例如 mul)初值一般为1,将每次获取的待累乘的数据依次 连乘到乘积结果变量,最后乘积变量的值即为这些数 据连乘的积。 【例7.3】输入n个整数,计算并输出平均成绩, 要求输出精确到两位小数

【例7.3】输入n个整数,计算并输出平均成绩,要求输出精确到 两位小数 算法的程序代码如下: #include " main( fint i, score, sum=0 double ave printf("please input n=n"; scanf(%d", &n) printf("input %d number n",n) for(l; K<=n; i++) i scanf(%d", &score) sum+=score ave=sum/n printf("average=%.2fn", ave) Return
【例7.3】输入n个整数,计算并输出平均成绩,要求输出精确到 两位小数。 算法的程序代码如下: #include " main( ) {int i, score, sum=0 double ave; printf("please input n=\n "); scanf("%d ",&n); printf("input %d number :\n ",n); for(i=1;i<=n;i++) { scanf("%d ",&score); sum+=score; } ave=sum/n; printf("average=%.2f\n ",ave); } [Return]

7.3解决不确定性问题的穷举算法 有些问题很难用确定的算法步骤进行描述,或 根本就没有确定的算法描述方法,但它们具有这样 的特点:如果问题有一组或多组解,则必定全在某 个集合中;如果集合内无解,集合外也肯定无解。 这样,就可以将集合中的元素一一列举出来,验证 是否为问题的解,这就是穷举法。 最简单得一类穷举问题可用线性方程或线性方 程组或不等式解决。 【例7.6】公元五世纪,我国数学家张邱建在 《算经》一书中提出有趣的百钱买百鸡问题:“鸡 翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一, 百钱买百鸡,问翁母雏各几何?
7.3 解决不确定性问题的穷举算法 有些问题很难用确定的算法步骤进行描述,或 根本就没有确定的算法描述方法,但它们具有这样 的特点:如果问题有一组或多组解,则必定全在某 个集合中;如果集合内无解,集合外也肯定无解。 这样,就可以将集合中的元素一一列举出来,验证 是否为问题的解,这就是穷举法。 最简单得一类穷举问题可用线性方程或线性方 程组或不等式解决。 【例7.6】公元五世纪,我国数学家张邱建在 《算经》一书中提出有趣的百钱买百鸡问题:“鸡 翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一, 百钱买百鸡,问翁母雏各几何?

分析:设xyz分别表示买鸡翁,鸡母,鸡雏的数 目,则有 X+y+Z=100 5x+3y+z/3=100 三个未知数,两个方程,有无穷多组解,在本题 中,应只求正整数解。根据可能性分析,得出可能 的取值范围为:鸡翁x:1~19之间;鸡母:1~32之 间;鸡雏:3~98之间; 可用一个三重循环对xyz的所有组合情况,测试 满足条件的解 为减少循环次数,可对上述方程进行优化,用 z=-100-xy带入另一个方程,得:7X+4y=100
分析:设x,y,z分别表示买鸡翁,鸡母,鸡雏的数 目,则有 x+y+z=100 5x+3y+z/3=100 三个未知数,两个方程,有无穷多组解,在本题 中,应只求正整数解。根据可能性分析,得出可能 的取值范围为:鸡翁x:1~19之间;鸡母:1~32之 间;鸡雏:3~98之间; 可用一个三重循环对x,y,z的所有组合情况,测试 满足条件的解。 为减少循环次数,可对上述方程进行优化,用 z=100-x-y带入另一个方程,得:7x+4y=100

用二重循环即可实现程序代码 算法程序代码如下 #include main() int X,y printf("‰5c‰%5c%5c"Ⅶn,’x,'y,z') for(x=1;x<=19;x++) for(y=1;y<=32;y+) if(7*x+4*y=100) printf %5d%5d%5d\n", x, y, 100-x-y) break 3 Return
用二重循环即可实现程序代码。 算法程序代码如下: #include main( ) { int x,y; printf("%5c%5c%5c"\n,'x','y','z'); for(x=1;x<=19;x++) for(y=1;y<=32;y++) if(7*x+4*y==100) { printf("%5d%5d%5d\n",x,y,100-x-y); break; } } [Return]

7.4排序问题算法 排序是程序设计中一种重要的操作,应用十分普遍, 常用的排序算法有选择排序、插入排序、冒泡排序、索 引排序等几种: 【例79】用选择排序算法对n个数组元素进行排序 将N个数组元素a[0]~aN-]由小到大进行选择排序的 基本方法是: 第0步:找到a[0]~aN-1中的最小值元素与a[0]交换 第1步:找到a[aN-1中的最小值元素与a[1]交换; 第N-2步:找到aN-2]~aN-1中的最小值元素与aN-2] 交换。 排序完成。 Return
排序是程序设计中一种重要的操作,应用十分普遍, 常用的排序算法有选择排序、插入排序、冒泡排序、索 引排序等几种: 【例7.9】用选择排序算法对n个数组元素进行排序。 将N个数组元素a[0]~a[N-1]由小到大进行选择排序的 基本方法是: 第0步:找到a[0]~a[N-1]中的最小值元素与a[0]交换; 第1步:找到a[1]~a[N-1]中的最小值元素与a[1]交换; … 第N-2步:找到a[N-2]~a[N-1]中的最小值元素与a[N-2] 交换。 排序完成。[Return] 7.4排序问题算法

7.5数值积分算法 1.变步长梯形求积分法 变步长梯形积分法计算定积分的基本思想是: 首先用梯形公式计算其中:n=1,h=b-a; 然后用下列递推公式计算 2n-->n,0.5h-->h 直到T2nTn<E为止。 【例713】用变步长梯形求积分法求的定积 分。取ε=0.0001。 算法程序代码如下:
1. 变步长梯形求积分法 变步长梯形积分法计算定积分的基本思想是: 首先用梯形公式计算 其中:n=1,h=b-a; 然后用下列递推公式计算: 2n--->n,0.5h--->h 直到|T2n-Tn|<ε为止。 【例7.13】用变步长梯形求积分法求的定积 分。取ε=0.000001。 算法程序代码如下: 7.5 数值积分算法
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C语言》课程教学课件(PPT讲稿)第6章 函数.ppt
- 《C语言》课程教学课件(PPT讲稿)第5章 指针.ppt
- 《C语言》课程教学课件(PPT讲稿)第4章 数组.ppt
- 《C语言》课程教学课件(PPT讲稿)第3章 C语言的基本程序设计.ppt
- 《C语言》课程教学课件(PPT讲稿)第2章 C语言的数据类型、运算符和表达式.ppt
- 《C语言》课程教学课件(PPT讲稿)第1章 概述.ppt
- 《C语言》课程教学课件(PPT讲稿)第6章 函数(2/2).ppt
- 《C语言》课程教学课件(PPT讲稿)第6章 函数(1/2).ppt
- 《C语言》课程教学课件(PPT讲稿)第5章 指针.ppt
- 《C语言》课程教学资源(讲义)上机实验.doc
- 《C语言》课程教学课件(PPT讲稿)第3章 C语言的基本程序设计.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第九章 编译预处理.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第八章 函数.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第七章 数组.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第六章 循环控制.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第五章 选择结构程序设计.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第四章 最简单的C程序设计—顺序程序设计.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第三章 数据类型、运算符与表达式.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第二章 程序的灵魂—算法.ppt
- 海南大学:《C语言程序设计》课程电子教案(PPT教学课件)第一章 概述(主讲:台安).ppt
- 《C语言》课程教学课件(PPT讲稿)第8章 结构体、共用体和枚举类型.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第一章 计算机网络概述(溪利亚).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层(1/2).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第三章 数据链路层(2/2).ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第二章 物理层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第五章 运输层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第六章 应用层.ppt
- 武昌首义学院(华中科技大学武昌分校):《计算机网络》课程教学资源(PPT课件讲稿)第四章 网络层.ppt
- 计算机应用基础:《网络营销实用教程》课程教学资源(案例讨论)联通CDMA战略与战术的失衡.doc
- 《网络营销基础与应用》课程教学资源(PPT课件)第二章 网络目标市场调研.ppt
- 计算机应用基础:《网络营销实用教程》课程教学资源(案例讨论)hao123成功秘笈.doc
- 计算机应用基础:《网络营销实用教程》课程教学资源(案例讨论)IT业——网络营销的三种模式.doc
- 《网络营销基础与应用》课程教学资源(PPT课件)第一章 市场营销与网络营销.ppt
- 《网络营销基础与应用》课程教学资源(PPT课件)第三章 网络营销产品策略.ppt
- 计算机应用基础:《网络营销实用教程》课程教学资源(案例讨论)网络营销差别定价策略的一个案例分析.doc
- 《网络营销基础与应用》课程教学资源(PPT课件)第四章 网络营销渠道.ppt
- 计算机应用基础:《网络营销实用教程》课程教学资源(案例讨论)戴尔告诉你 如何利用网络营销赚钱.doc
- 《网络营销基础与应用》课程教学资源(PPT课件)第五章 网络定价策略.ppt
- 《网络营销基础与应用》课程教学资源(PPT课件)第六章 网络营销促销.ppt
- 《全国二级C语言题库及答案》修改题答案.doc