在程序设计中,许多问题的解“隐藏”在多个可能之中。在一个集合内对集合中的每一个元素进行一一测试的方法称为穷举法。穷举方法的实现主要依赖于以下两个基本要点:·搜寻可能值的范围如何确定。程序设计中应据问题的描述具体分析,确定时应尽量缩小搜索范围,提高程序效率。编写程序找出所有的“水仙花数”。程序可以依次取出区间[100,999]之间的每一个数,然后将该数分解为3个数字,按照判定条件判定即可。......
2023-11-20
递推就是一个不断由变量旧值按照一定的规律推出变量新值的过程,递推在程序设计中往往通过迭代方法实现。迭代一般与3个因素有关,它们是初始值、迭代公式、迭代结束条件(迭代次数)。
迭代算法的基本思想:迭代变量先取初值,据初值(或旧值)按迭代公式计算出新值,用新值对变量原值进行更新替换;重复以上过程,直到迭代结束条件满足时结束迭代。迭代过程在程序结构上使用循环结构进行处理。
【例4.11】 求两个正整数的最大公约数和最小公倍数。
题目分析:使用辗转相除法实现求两个非负整数m和n(m>n)的最大公倍数,其算法可以描述为:
①m除以n得到余数r(0≤r<n)。
②若r=0则算法结束,n为最大公约数。否则执行步骤③。
③m←n,n←r,转回到步骤①。(www.chuimin.cn)
当已知两个非负整数m和n的最大公约数后,求其最小公倍数的算法可以简单描述为:两个正整数之积除以它们的最大公约数。
上面程序代码是完全按照算法描述的步骤书写的,考虑到除数肯定不能为0,两个数的乘积可以在迭代之前计算等因素,程序可以进行如下优化,请读者对照理解。
【例4.12】 求出斐波那契数列的前n项。裴波那契(Fibonacci)数列:前两个数据项都是1,从第3个数据项开始,其后的每一个数据项都是其前面的两个数据项之和。
题目分析:设用f1、f2和f3表示相邻的3个裴波那契数据项,据题意有f1、f2的初始值为1,即迭代的初始条件为:f1=f2=1;迭代的公式为:f3=f1+f2。有初始条件和迭代公式只能描述前3项之间的关系,为了反复使用迭代公式,可以在每一个数据项求出后将f1、f2和f3顺次向后移动一个数据项,即将f2的值赋给f1,f3的值赋给f2,从而构成如下的迭代语句序列:f3=f1+f2;、f1=f2;、f2=f3;,反复使用该语句序列就能够求出所要求的裴波那契数列。
/*Name:ex0412.c*/
有关C语言程序设计基础(第3版)的文章
在程序设计中,许多问题的解“隐藏”在多个可能之中。在一个集合内对集合中的每一个元素进行一一测试的方法称为穷举法。穷举方法的实现主要依赖于以下两个基本要点:·搜寻可能值的范围如何确定。程序设计中应据问题的描述具体分析,确定时应尽量缩小搜索范围,提高程序效率。编写程序找出所有的“水仙花数”。程序可以依次取出区间[100,999]之间的每一个数,然后将该数分解为3个数字,按照判定条件判定即可。......
2023-11-20
A.与参数x的类型相同B.无法确定C.void类型D.int类型3.为了避免嵌套的条件语句if-else的二义性,C语言规定()。A.else与缩排位置相同的if配对B.else与同一行上的if配对C.else与其之后最近的if配对D.else与其之前最近的尚未配对的if配对4.设x、y、z和k都是int型变量,则执行表达式:x=后,x的值为()。A.7 B.6 C.5 D.47.在C语言程序中,用关键字()定义无符号型变量。else语句实现两个分支。......
2023-09-19
若在表中找不到与给定条件相符合的数据,则称为不成功的查找,给出提示信息或空位置信息。本节介绍最常用的两种查找方法:顺序查找和折半查找。③基准位置数据值与查找的关键字值不相符时,在两个子集合中选取一个,重复执行①、②,直到被处理的查找集合中没有数据为止。图6.11是在一有序序列中实现对key=21进行折半查找的过程。......
2023-11-20
针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。......
2023-11-20
算法的描述方法主要有如下几种。例如,用传统流程图表示的顺序结构如图3.2所示,用NS图表示的顺序结构如图3.2所示,表示先执行A操作,再执行B操作,两者是顺序执行的关系。......
2023-11-20
图5.7两层函数嵌套调用示意图函数的嵌套调用即一个函数在被调用的过程中又调用了另外的一个函数。函数fac和powers的返回值类型均被设计为double型,其主要目的是为了避免n!x:0.5//0.5从键盘输入的数据0.50 powers of e=1.648721//程序执行结果......
2023-11-20
C语言中逻辑运算符及其含义见表3.2。表3.2逻辑运算符及其含义逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”表3.3逻辑运算真值表C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:·对逻辑表达式从左到右进行求解。......
2023-11-20
图3.6程序的4分支结构示意图对于一般的多分支情况,程序设计语言中没有直接对应的控制语句,需要首先对其分解,然后用单分支或者双分支控制结构的嵌套进行处理。图3.7分支结构对称分解示意图图3.8分支结构不对称分解示意图1.使用if语句嵌套组成多分支结构程序如果if结构或者else结构的语句部分又是另外一个if结构,称为if语句的嵌套。......
2023-11-20
相关推荐