文档库 最新最全的文档下载
当前位置:文档库 › 递归练习题目

递归练习题目

递归练习题目
递归练习题目

1.求阶乘.

输入n(0

2.Fibonacci数列

问题描述:

Fibonacci兔子问题是个经典问题:从某天开始把雌雄各一的一对小兔子放入养殖场中,小兔经过一个月长大,长大后,雌兔每月产雌雄各一的一对小兔。每对新兔也是一个月长大,长大后每对新兔也是每月产一对兔子。试问第n个月养殖场共有多少对兔子。

输入: n ,表示第n个月;

输出: 输出从第一个月到第n个月的兔子数目的序列.

样例: n=5

输出: 1 1 2 3 5

3、Hanoi问题(汉诺塔)。

有n个圆盘,半径各不相同,依半径从大到小,自下而上套在A柱上,另还有B、C 两根空柱,现要求将A柱上的n个圆盘全部搬到C柱上去且每次只许搬动一个盘子,还必须始终保持每根柱子上是小盘在上,大盘在下。编一个程序能够打印出移动过程。

4.棋子移动。

有2n个棋子(n>=4)排成一行,开始位置为白子全部在左边,黑子全部在右边,如图(n=5):〇〇〇〇〇●●●●●

移动棋子的规则是:每次必须同时移动移动相邻两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如n=5时,成为:

〇●〇●〇●〇●〇●

5、字母排列(组合)

显示从前m(A-----第m个)个大写英文字母中取n个不同字母的所有排列(组合)。

6、自然数拆分

一个整数n(n<=100)可以有多种分划,使其分划的一列整数之和为n。例如:

输入:n=6

输出文件hs.out,格式内容为

6

5 1

4 2

4 1 1

3 3

3 2 1

3 1 1 1

2 2 2

2 2 1 1

2 1 1 1

1 1 1 1 1 1

total=11 {表示分划数有11种}

7、数的一半(vijos 1130)

要求找出具有下列性质的数的个数(包含输入的自然数n):

先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:

①. 不作任何处理;

②. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;

③. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

样例: 输入: 6

满足条件的数为 6

16

26

126

36

136

输出: 6

8、核电站问题(vijos 1232)

一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸。于是,在某些坑中可能不放核物质。

任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数。

9、选数(vijos 1128)

[问题描述]:

已知n 个整数x1,x2,…,xn,以及一个整数k(k<n)。从n 个整数中任选k 个整数相加,可分别得到一系列的和。例如当n=4,k=3,4 个整数分别为3,7,12,19 时,可得全部的组合与它们的和为:

3+7+12=223+7+19=297+12+19=383+12+19=34。

现在,要求你计算出和为素数共有多少种。

例如上例,只有一种的和为素数:3+7+19=29)。

[输入]:

键盘输入,格式为:

n , k (1<=n<=20,k<n)

x1,x2,…,xn (1<=xi<=5000000)

[输出]:

屏幕输出,格式为:

一个整数(满足条件的种数)。

[输入输出样例]:

输入:

4 3

3 7 12 19

输出:

1

10、求先序排列(vijos 1132)

问题描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

样例

输入:BADC BDCA

输出:ABCD

输出

第一行打印一个数 -在区间 [1..N]内所包含的“自我数”的总数。第二行包含K个数 - a[s1]..a[s k], 用空格分开。输入保证所有的自我数a[s1]..a[s k] 在区间[1..N]内。 (例如当N = 100, s k可以为1..13 而不能为14,因为第14个自我数a[14] = 108, 108 > 100) 样例输入

100 10

1 2 3 4 5 6 7 11 12 13

样例输出

13

1 3 5 7 9 20 31 75 86 97

11、快速排序

快排思想:确定一个基准数,将数列中分割成两部分,一部分比基准数小,一部分比基准数大。再分别对这两部分进行同样的分割,直到每个部分元素个数为0或者1时结束。

12、K好数(vijos 1215)

【问题描述】

两个一位数a,b,若|a-b|=1,则称a,b为相邻的数字。例如:1和2、5和4……

如果一个K进制数的任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K 好数。请编程求出L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有4进制2位好数为11、13、20、22、30、31、33,共7个。

已知K、L,求L位K进制好数的数目。

【输入格式】

读入两个整数K、L,满足1≤K,L≤16。

【输出格式】

输出L位K进制好数的数目。

【样例数据】

输入输出

4 2 7

13、2的幂次方(noip普及组1998第三题)

〖问题描述〗

任何一个正整数都可以用2的幂次方表示.

例如:137=2^7+2^3+2^0

同时约定次方用括号来表示,即a^b可表示为a(b)

由此可知,137可表示为:2(7)+2(3)+2(0)

进一步:7=2^2+2+2^0 (2^1用2表示)

3=2+2^0

所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:1315=2^10+2^8+2^5+2+1

所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

输入:正整数(n<=20000)

输出:符合约定的n的0,2表示(在表示中不能有空格)

算法设计与分析习题答案1-6章

习题1 1. 图论诞生于七桥问题。出生于瑞士的伟大数学家欧拉(Leonhard Euler ,1707—1783)提出并解决了该问题。七桥问题是这样描述的:一个人是否能在一次步行中穿越哥尼斯堡(现 在叫加里宁格勒,在波罗的海南岸)城中全部的七座桥后回到起点,且每座桥只经过一次, 图是这条河以及河上的两个岛和七座桥的草 图。请将该问题的数据模型抽象出来,并判断此问题是否有解。 七桥问题属于一笔画问题。 输入:一个起点 输出:相同的点 1, 一次步行 2, 经过七座桥,且每次只经历过一次 3, 回到起点 该问题无解:能一笔画的图形只有两类:一类是所有的点都是偶点。另一类是只有二个奇点的图形。 2.在欧几里德提出的欧几里德算法中(即最初的欧几里德算法)用的不是除法而是减法。请用伪代码描述这个版本的欧几里德算法 =m-n 2.循环直到r=0 m=n n=r r=m-n 3 输出m 3.设计算法求数组中相差最小的两个元素(称为最接近数)的差。要求分别给出伪代码和C++描述。 编写程序,求n 至少为多大时,n 个“1”组成的整数能被2013整除。 #include using namespace std; int main() { double value=0; 图 七桥问题

for(int n=1;n<=10000 ;++n) { value=value*10+1; if(value%2013==0) { cout<<"n至少为:"< using namespace std; int main () { double a,b; double arctan(double x);圣经上说:神6天创造天地万有,第7日安歇。为什么是6天呢?任何一个自然数的因数中都有1和它本身,所有小于它本身的因数称为这个数的真因数,如果一个自然数的真因数之和等于它本身,这个自然数称为完美数。例如,6=1+2+3,因此6是完美数。神6天创造世界,暗示着该创造是完美的。设计算法,判断给定的自然数是否是完美数 #include using namespace std; int main() { int value, k=1; cin>>value; for (int i = 2;i!=value;++i) { while (value % i == 0 ) { k+=i;有4个人打算过桥,这个桥每次最多只能有两个人同时通过。他们都在桥的某一端,并且是在晚上,过桥需要一只手电筒,而他们只有一只手电筒。这就意味着两个人过桥后必须有一个人将手电筒带回来。每个人走路的速度是不同的:甲过桥要用1分钟,乙过桥要用2分钟,丙过桥要用5分钟,丁过桥要用10分钟,显然,两个人走路的速度等于其中较慢那个人的速度,问题是他们全部过桥最少要用多长时间? 由于甲过桥时间最短,那么每次传递手电的工作应有甲完成 甲每次分别带着乙丙丁过桥 例如: 第一趟:甲,乙过桥且甲回来

java练习题目+基础编程题50例

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 【程序11】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。 【程序12】

递归习题

1、斐波那契数列 【问题描述】 斐波纳契数列0,1,1,2,3,5,8,13,21,34,55…从第三项起,每一项都是紧挨着的前两项的和。写出计算斐波那数列任意一个数据项的递归程序。 【输入格式】 所求项数 【输出格式】 数据项的值 【输入样例】 10 【输出样例】 34 2、倒序数 【问题描述】 用递归算法写程序,输入一个非负整数,输出这个数的倒序数。 【输入格式】 一个非负整数 【输出格式】 倒序结果 【输入样例】 123 【输出样例】 321 3、十进制转换成八进制数 【问题描述】 用递归算法,把任一给定的十进制数转换成八进制数输出。 【输入格式】 一个正整数,表示需要转换的十进制数。 【输出格式】 一个正整数,表示转换之后的八进制数。 【输入样例】 15 【输出样例】 17 4、求n!的值 【问题描述】 用递归算法,求n!的精确值(n以一般整数输入)。 【输入样例】 10 【输出样例】 10!=3628800

5、求最大公约数 【问题描述】 用递归方法求两个正整数m和n的最大公约数。(m>0,n>0) 【输入格式】 两个数,即m和n的值。 【输出格式】 最大公约数。 【输入样例】 8 6 【输出样例】 gcd=2 6、背包问题 【问题描述】 简单的背包问题,设有一个背包,可以放入的重量为s。现有n件物品,质量分布为w1,为,…,wn(1≤i≤n),均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s。找到一组解即可。 【输入格式】 第一行是物品总件数和背包的载重量,第二行为各物品的重量。 【输出格式】 各所选物品的序号和重量。 【输入样例】 5 10 1 2 3 4 5 【输出样例】 number:1 weight:1 number:4 weight:4 number:5 weight:5 7、2的幂次方 任何一个正整数都可以用2 的幂次方表示: 如137=2^7+2^3+2^0 同时约定用括号来表示次方即a^b可表示为a(b) 所以137可表示为 2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2 表示) 3=2+2^0 所以137可表示为:2(2(2)+2+2(0))+2(2+2(2(0))+2(0) 又如:1315=2^10+2^8+2^5+2+1 所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 【输入格式】 正整数(n<=20000) 【输出格式】

热工基础课后题答案

二零一七年,秋

第一章 热力学第一定律 1-1用水银压力计测量容器中的压力,在水银柱上加一段水,若水柱高1020mm ,水银柱高900mm ,当时大气压力计上的度数为b 755mmHg p =。求容器中气体的压力。 解:查表可知:21mmH O=9.80665Pa 1mmHg=133.3224Pa 由题中条件可知 2H O Hg b 1020 mm 9.80665 Pa 900mm 133.3224Pa 755mm 133.3224Pa 230.651 KPa 0.231MPa p p p p =++=?+?+?=≈容器 即容器中气体的压力为0.231MPa 。 1-2容器中的真空度为600mmHg v p =,气压计上的高度是b 755mmHg p =,求容器中气体的绝对压力(用Pa 表示)。如果容器中的绝对压力不变,而气压计上高度为 b 770mmHg p =,求此时真空表的度数(以mmHg 表示). 解:因为 600mmHg=600mm 133.3224Pa=79993.4Pa v p =? b 755mmHg=755mm 133.3224Pa=100658.4Pa p =? 容器中气体的绝对压力为 b v 100658.479993.420665Pa p p p =-=-= 若以mmHg 表示真空度,则 20665 20665Pa= mmHg 155mmHg 133.3224 p == 则当气压计高度为b 770mmHg p =时,真空表的读数为 770mmHg 155mmHg 615mmHg v b p p p '=-=-= 1-3用斜管压力计测量锅炉烟道气的真空度,管子倾斜角30α=?,压力计使用密度 30.8g/cm ρ=的煤油,斜管中液柱长200mm l =,当地大气压力b 745mmHg p =。求烟气

第3章程序与递归:组合、抽象与构造练习题答案解析

第3章程序与递归:组合、抽象与构造 1、关于计算系统与程序,下列说法正确的是_____。 (A)只有用计算机语言编写出来的代码才是程序,其他都不能称其为程序; (B)构造计算系统是不需要程序的,程序对构造计算系统没有什么帮助; (C)任何系统都需要程序,只是这个程序是由人来执行还是由机器自动执行,可以由机器自动执行程序的系统被称为计算系统; (D)程序是用户表达的随使用者目的不同而千变万化的复杂动作,不是使用者实现的而是需要计算系统事先完成的。 答案:C 解释: 本题考查程序,计算系统等的概念; (A)程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,只用计算机语言编写出来的代码称为程序,这个概念太狭隘了,A错误;(B)计算系统的一部分是由程序组成的,所以B错误;(C)计算系统= 基本动作+ 指令+ 程序执行机构,任何系统都需要系统,C完全正确;(D)程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,并不是由用户表达的,随使用者的不同而千变万化的复杂动作。所以D是错的; 具体内容参考第三章视频之“程序的作用和本质”及第三章课件。 2、关于程序,下列说法不正确的是_____。 (A)“程序”是由人编写的、以告知计算系统实现人所期望的复杂动作; (B)“程序”可以由系统自动解释执行,也可以由人解释由系统执行; (C)普通人是很难理解“程序”的,其也和“程序”无关; (D)“程序”几乎和每个人都有关系,如自动售票系统、自动取款机等。 答案:C 解释: 本题考查程序的概念; 程序= 基本动作指令的一个组合或执行序列, 用以实现复杂的动作,所以A,B,D都是正确的;C说普通人很难理解程序,这显然是错误的。所以选C; 具体内容参考第三章视频之“程序的作用和本质”及第三章课件。

热工基础思考题答案

思考题 第一章 1.平衡状态与稳定状态有何区别?热力学中为什幺要引入平衡态的概念? 答:平衡状态是在不受外界影响的条件下,系统的状态参数不随时间而变化的状态。而稳定状态则是不论有无外界影响,系统的状态参数不随时间而变化的状态。可见平衡必稳定,而稳定未必平衡。热力学中引入平衡态的概念,是为了能对系统的宏观性质用状态参数来进行描述。 2.表压力或真空度能否作为状态参数进行热力计算?若工质的压力不变,问测量其压力的 压力表或真空计的读数是否可能变化? 答:不能,因为表压力或真空度只是一个相对压力。若工质的压力不变,测量其压力的压力表或真空计的读数可能变化,因为测量所处的环境压力可能发生变化。 3.当真空表指示数值愈大时,表明被测对象的实际压力愈大还是愈小? 答:真空表指示数值愈大时,表明被测对象的实际压力愈小。 4. 准平衡过程与可逆过程有何区别? 答:无耗散的准平衡过程才是可逆过程,所以可逆过程一定是准平衡过程,而准平衡过程不一定是可逆过程。 5. 不可逆过程是无法回复到初态的过程,这种说法是否正确? 答:不正确。不可逆过程是指不论用任何曲折复杂的方法都不能在外界不遗留任何变化的情况下使系统回复到初态,并不是不能回复到初态。 6. 没有盛满水的热水瓶,其瓶塞有时被自动顶开,有时被自动吸紧,这是什幺原因? 答:水温较高时,水对热水瓶中的空气进行加热,空气压力升高,大于环境压力,瓶塞被自动顶开。而水温较低时,热水瓶中的空气受冷,压力降低,小于环境压力,瓶塞被自动吸紧。 7. 用U形管压力表测定工质的压力时,压力表液柱直径的大小对读数有无影响? 答:严格说来,是有影响的,因为U型管越粗,就有越多的被测工质进入U型管中,这部分工质越多,它对读数的准确性影响越大。 第二章

递归基础练习题

递归基础练习题 1. 求1+2+3+……+n的值 2. 求1*2*3*……*n的值 3. 数的全排列问题。将n个数字1,2,…n的所有排列按字典顺序枚举出来 2 3 1 2 1 3 3 1 2 3 2 1 4. 数的组合问题。从1,2,…,n中取出m个数,将所有组合按照字典顺序列出。 如n=3,m=2时,输出: 1 2 1 3 2 3 9. 求两个数的最大公约数。 10. 求两个数的最小公倍数。 5. 小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子? 8. 著名的菲波拉契(Fibonacci)数列,其第一项为1,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。 15. 梯有N阶,上楼可以一步上一阶,也可以一次上二阶。编一个程序,计算共有多少种不同的走法。 6. 有雌雄一对兔子,假定过两个月便可繁殖雌雄各一的一对小兔子。问过n个月后共有多少对兔子? 7. 一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子? 11. 输入一个数,求这个数的各位数字之和。 12. 角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。 如:输入22, 输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 STEP=16 13. 将十进制转换为二进制。 14. 计算M=max(a,b,c)/[max(a+b,b,c)*max(a,b,b+c)],其中a,b,c由键盘输入。 16. 某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况? 17. 给出一棵二叉树的中序与后序排列。求出它的先序排列。 18. 求把一个整数n无序划分成k份互不相同的正整数之和的方法总数。 19. 已知一个一维数组A[1..N]。{N<50} 又已知一整数M。如能使数组A中任意几个元素之和等于M,则输出YES,反之则为NO。 20. 要求找出具有下列性质的数的个数(包含输入的自然数n): 先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理: ①. 不作任何处理;

《递归算法与递归程序》教学设计

递归算法与递归程序 岳西中学:崔世义一、教学目标 1知识与技能 (1) ?认识递归现象。 (2) ?使用递归算法解决冋题往往能使算法的描述乘法而易于表达 (3) ?理解递归三要素:每次递归调用都要缩小规模;前次递归调用为后次作准备:递归调用必须有条件进行。 (4) ?认识递归算法往往不是咼效的算法。 (5) ? 了解递归现象的规律。 (6) ?能够设计递归程序解决适用于递归解决的问题。 (7) ?能够根据算法写出递归程序。 (8) ? 了解生活中的递归现象,领悟递归现象的既有重复,又有变化的特点,并且从中学习解决问题的一种方法。 2、方法与过程 本节让同学们玩汉诺塔的游戏,导入递归问题,从用普通程序解决斐波那契的兔子问题入手,引导学生用自定义了一个以递归方式解决的函数过程解决问题,同时让同学们做三个递归练习,巩固提高。然后让学生做练习(2) 和练习(3)这两道题目的形式相差很远,但方法和答案却是完全相同的练习,体会其中的奥妙,加深对递归算法的了解。最后用子过程解决汉诺塔的经典问题。 3、情感态度和价值观 结合高中生想象具有较强的随意性、更富于现实性的身心发展特点,综合反映出递归算法的特点,以及递归算法解答某些实践问题通常得很简洁,从而激发学生对程序设计的追求和向往。 二、重点难点 1、教学重点 (1) 了解递归现象和递归算法的特点。 (2) 能够根据问题设计出恰当的递归程序。 2、教学难点 (1) 递归过程思路的建立。 (2) 判断冋题是否适于递归解法。 (3) 正确写出递归程序。 三、教学环境 1、教材处理 教材选自《浙江省普通高中信息技术选修:算法与程序设计》第五章,原教材的编排是以本节以斐波那契的兔子问题引人,导出递归算法,从而自 定义了一个以递归方式解决的函数过程。然后利用子过程解决汉诺塔的经典问题。 教材经处理后,让同学们玩汉诺塔的游戏,导入递归问题,从用普通程序解决斐波那契的兔子问题入手,引导学生用自定义了一个以递归方式解决的函数过程解决问题,同时让同学们做三个递归练习,巩固提高。然后让学生做练习⑵ 和练习

50道JAVA基础编程练习题

50道JAVA基础编程练习题 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。

工程热力学思考题答案

第九章气体动力循环 1、从热力学理论看为什么混合加热理想循环的热效率随压缩比ε和定容增压比λ的增大而提高,随定压预胀比ρ的增大而降低 答:因为随着压缩比ε和定容增压比λ的增大循环平均吸热温度提高,而循环平均放热温度不变,故混合加热循环的热效率随压缩比ε和定容增压比λ的增大而提高。混合加热循环的热效率随定压预胀比ρ的增大而减低,这时因为定容线比定压线陡,故加大定压加热份额造成循环平均吸热温度增大不如循环平均放热温度增大快,故热效率反而降低。 2、从内燃机循环的分析、比较发现各种理想循环在加热前都有绝热压缩过程,这是否是必然的 答:不是必然的,例如斯特林循环就没有绝热压缩过程。对于一般的内燃机来说,工质在气缸内压缩,由于内燃机的转速非常高,压缩过程在极短时间内完成,缸内又没有很好的冷却设备,所以一般都认为缸内进行的是绝热压缩。 3、卡诺定理指出两个热源之间工作的热机以卡诺机的热效率最高,为什么斯特林循环的热效率可以和卡诺循环的热效率一样 答:卡诺定理的内容是:在相同温度的高温热源和相同温度的低温热源之间工作的一切可逆循环,其热效率都相同,与可逆循环的种类无关,与采用哪一种工质无关。定理二:在温度同为T1的热源和同为T2的冷源间工作的一切不可逆循环,其热效率必小于可逆循环。由这两条定理知,在两个恒温热源间,卡诺循环比一切不可逆

循环的效率都高,但是斯特林循环也可以做到可逆循环,因此斯特林循环的热效率可以和卡诺循环一样高。 4、根据卡诺定理和卡诺循环,热源温度越高,循环热效率越大,燃气轮机装置工作为什么要用二次冷却空气与高温燃气混合,使混合气体降低温度,再进入燃气轮机 答:这是因为高温燃气的温度过高,燃气轮机的叶片无法承受这么高的温度,所以为了保护燃气轮机要将燃气降低温度后再引入装置工作。同时加入大量二次空气,大大增加了燃气的流量,这可以增加燃气轮机的做功量。 5、卡诺定理指出热源温度越高循环热效率越高。定压加热理想循环的循环增温比τ高,循环的最高温度就越高,但为什么定压加热理想循环的热效率与循环增温比τ无关而取决于增压比π 答:提高循环增温比,可以有效的提高循环的平均吸热温度,但同时也提高了循环的平均放热温度,吸热和放热均为定压过程,这两方面的作用相互抵消,因此热效率与循环增温比无关。但是提高增压比,p1不变,即平均放热温度不变,p2提高,即循环平均吸热温度提高,因此循环的热效率提高。 6、以活塞式内燃机和定压加热燃气轮机装置为例,总结分析动力循环的一般方法。 答:分析动力循环的一般方法:首先,应用“空气标准假设”把实际问题抽象概括成内可逆理论循环,分析该理论循环,找出影响循环热效率的主要因素以及提高该循环效率的可能措施,以指导实际

程序设计基本训练题集

程序设计基本训练题集,给你拿去做着玩吧!! 一、基础题 1. 编程,统计在所输入的50个实数中有多少个正数、多少个负数、多少个零。 2. 编程,输入一个10进制正整数,然后输出它所对应的八进制、十六进制数。 3. 输入20个整数存入一个整型数组,输出其中能被数组中其它(只需其中一个)元素整除的那些数组元素。 4. 输入两个数组(数组元素个数自定),输出在两个数组中都出现的元素(如a[5]={2,3,4,5,6},b[6]={3,5,7,9,10,-1},则输出3、5)。 5. 输入两个数组(数组元素个数自定),输出在两个数组中都不出现的元素(如a[5]={2,3,4,5,6},b[6]={3,5,7,9,10,-1},则输出2、4、6、3、7、9、10、-1)。 6.给定年份year,判别该年份是否闰年,要求: 6-1 一般算法; 6-2 用宏实现:定义一个宏以判别该年份是否闰年。 7.给定一个日期(年/月/日)计算该日期是所在年的第几天。 8. 编写一个函数,处理n行、n列的二维数组:将每一行的元素同除以该行上绝对值最大的元素。 9. 设计一个函数,求给出数的补码。 10.编写一个程序,输入月份号,输出该月份的英文月名,要求用指针数组处理。 11. 编写函数,求m行、n列的二维数组全体元素中负数的个数。 12. 编写函数,返回在一个整数组中出现次数最多的数及其出现次数。 13. 编写函数,在n个元素的一维数组中,统计比相邻元素大的数组元素个数并将统计数返回(不考虑a[0]和a[n-1]),要求以指针变量而不是数组名作参数。 14. 编写函数,在n个元素的一维数组中,找出最大值、最小值并传送到调用函数。 15. 编写一个函数,统计m行n列二维数组中有多少个正数、多少个负数,多少个零,并返回统计结果。16.输入一个数组,删除数组中的负数。 17.有4名学生每个学生考4门课程,要求在用户输入学生学号以后能输出该生的全部成绩,用指针型函数来实现。请编写函数float *search(). main() {static float score[][4]={{60,76,80,90},{45,86,57,90},{58,95,80,71},{78,50,60,85}}; float *search(),p; int I,m; printf(“enter the number of student:”); scanf(“%d”,&m); printf(“the score of NO.%dare:\n”,m); p=search(score,m); for(I=0;I<4;I++) printf(“%52f\t”,*(p+I)); } float *search(float (pointer)[4],int n) {} 18.有4名学生每个学生考4门课程,要求在用户找出有不及格课程的学生学号并输出全部成绩,用指针来实现。 19.编写一个函数实现将一个整数按逆序存放到一个数组中。

算法设计与分析基础课后习题答案

Program算法设计与分析基础中文版答案 习题 5..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立. Hint: 根据除法的定义不难证明: 如果d整除u和v, 那么d一定能整除u±v; 如果d整除u,那么d也能够整除u的任何整数倍ku. 对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。 数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。故gcd(m,n)=gcd(n,r) 6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次? Hint: 对于任何形如0<=m

设sqrt(x)是求平方根的函数) 算法Quadratic(a,b,c) 描述将十进制整数表达为二进制整数的标准算法 a.用文字描述 b.用伪代码描述 解答: a.将十进制整数转换为二进制整数的算法 输入:一个正整数n 输出:正整数n相应的二进制数 第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n 第二步:如果n=0,则到第三步,否则重复第一步 第三步:将Ki按照i从高到低的顺序输出 b.伪代码 算法 DectoBin(n) .n]中 i=1 while n!=0 do { Bin[i]=n%2; n=(int)n/2; i++; } while i!=0 do{ print Bin[i]; i--; } 9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略)对这个算法做尽可能多的改进. 算法 MinDistance(A[0..n-1])

工程热力学思考题参考答案

第八章压气机的热力过程1、利用人力打气筒为车胎打气时用湿布包裹气筒的下部,会发现打气时轻松了一点,工程上压气机缸常以水冷却或气缸上有肋片,为什么? 答:因为气体在压缩时,以等温压缩最有利,其所消耗的功最小,而在人力打气时用湿布包裹气筒的下部或者在压气机的气缸用水冷却,都可以使压缩过程尽可能的靠近等温过程,从而使压缩的耗功减小。 2、既然余隙容积具有不利影响,是否可能完全消除它? 答:对于活塞式压气机来说,由于制造公差、金属材料的热膨胀及安装进排气阀等零件的需要,在所难免的会在压缩机中留有空隙,所以对于此类压缩机余隙容积是不可避免的,但是对于叶轮式压气机来说,由于它是连续的吸气排气,没有进行往复的压缩,所以它可以完全排除余隙容积的影响。 3、如果由于应用气缸冷却水套以及其他冷却方法,气体在压气机气缸中已经能够按定温过程进行压缩,这时是否还需要采用分级压缩?为什么? 答:我们采用分级压缩的目的是为了减小压缩过程中余隙容积的影响,即使实现了定温过程余隙容积的影响仍然存在,所以我们仍然需要分级压缩。 4、压气机按定温压缩时,气体对外放出热量,而按绝热压缩时不向外放热,为什么定温压缩反较绝热压缩更为经济? 答:绝热压缩时压气机不向外放热,热量完全转化为工质的内能,使工质的温度升高,压力升高,不利于进一步压缩,且容易对压气机造成损伤,耗功大。等温压缩压气机向外放热,工质的温度不变,相比于绝热压缩气体压力较低,有利于进一步压缩耗功小,所以等温压缩更为经济。 5、压气机所需要的功可从第一定律能量方程式导出,试导出定温、多变、绝热压缩压气机所需要的功,并用T-S图上面积表示其值。

答:由于压缩气体的生产过程包括气体的流入、压缩和输出,所以压气机耗功应以技术功计,一般用w c 表示,则w c =-w t 由第一定律:q=△h+w t , 定温过程:由于T 不变,所以△h 等于零,既q=w t ,q=T △s ,2 1ln p p R s g =?,则有 多变过程:w c =-w t =△h-q 所以??????????-???? ??-=-111121n n g c p p T R n n w 绝热过程:即q=0,所以 6、活塞式压气机生产高压气体为什么要采用多级压缩及级间冷却的工艺? 答:由于活塞式压气机余隙容积的存在,当压缩比增大时,压气机的产气量减小,甚至不产气,所以要将压缩比控制在一定范围之内,因此采用多级压缩,以减小单级的压缩比。气体压缩以等温压缩为最有利,因此应设法使压气机内气体压缩过程指数n 减小,采用级间冷却可以很好的减小n. 7、叶轮是压气机不可逆绝热压缩比可逆绝热压缩多耗功可用图8-11中的面积m2s 2’nm 表示,这是否即是此不可逆过程的做功能力损失?为什么? 图8-11 答:多消耗的功量并不就是损失的做功能力损失。因为 i=()()m n T m n s s s s T S T -=-=?2' 00 为图中的17nm1. 8、如图8-13所示的压缩过程1-2,若是可逆的,则这一过程是什么过程?他与不可逆绝热压缩过程1-2的区别何在?两者之中哪一过程消耗的功大?大多少? 图8-13

c++递归练习

递归练习 1.求1+2+3+……+n的值. 2.小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早 上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子? 3.求两个数的最大公约数(辗转相除)。 4.梯有N阶,上楼可以一步上一价,也可以一次上二阶。编一个程 序,计算共有多少种不同的走法。 5.自然数的拆分问题。给定自然数n,将其拆分成若干自然数的和。 输出所有解,每组解中数字按从小到大排列。相同数字的不同排列算一组解。如:3=1+1+1 3=1+2 3=3

1216: 数的组合 找出从自然数1、2、... 、n(0

题目描述 任何一个正整数都可以用2的幂次方表示. 例如:137=2^7+2^3+2^0 同时约定次方用括号来表示,即a^b可表示为a(b) 由此可知,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^0 所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如:1315=2^10+2^8+2^5+2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) 输入 一个正整数n 输出 符合约定的n的0,2表示 样例输入 样例输出

50道JAVA基础编程练习题(包含答案)

50道JAVA基础编程练习题 Java学习笔记2010-03-19 17:45:01 阅读1117 评论6 字号:大中小订阅 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 做了【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 做了【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), 几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 【程序9】 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的

工程热力学思考题答案,第一章.

第 一 章 基本概念与定义 1.闭口系与外界无物质交换,系统内质量保持恒定,那么系统内质量保持恒定的热力系一定是闭口系统吗? 答:不一定。稳定流动开口系统内质量也可以保持恒定。 2.有人认为,开口系统中系统与外界有物质交换,而物质又与能量不可分割,所以开口系统不可能是绝热系。对不对,为什么? 答:这种说法是不对的。工质在越过边界时,其热力学能也越过了边界。但热力学能不是热量,只要系统和外界没有热量地交换就是绝热系。 3.平衡状态与稳定状态有何区别和联系,平衡状态与均匀状态有何区别和联系? 答:只有在没有外界影响的条件下,工质的状态不随时间变化,这种状态称之为平衡状态。稳定状态只要其工质的状态不随时间变化,就称之为稳定状态,不考虑是否在外界的影响下,这是他们的本质区别。平衡状态并非稳定状态之必要条件。 物系内部各处的性质均匀一致的状态为均匀状态。平衡状态不一定为均匀状态,均匀并非系统处于平衡状态之必要条件。 4.倘使容器中气体的压力没有改变,试问安装在该容器上的压力表的读数会改变吗?绝对压力计算公式b e p p p =+()e p p >, b e p p p =-()e p p <中,当地大气压是否必定是环境大气压? 答:压力表的读数可能会改变,根据压力仪表所处的环境压力的改变而改变。当地大气压不一定是环境大气压。环境大气压是指压力仪表所处的环境的压力。 5.温度计测温的基本原理是什么? 答:选作温度计的感应元件的物体应具备某种物理性质随物体的冷热程度不同有显著的变化。有两个系统分别和第三个系统处于热平衡,则两个系统彼此必然处于热平衡。 6.经验温标的缺点是什么?为什么? 答:任何一种经验温标不能作为度量温度的标准。由于经验温标依赖于测温物质的性质,当选用不同测温物质的温度计、采用不同的物理量作为温度的标志来测量温度时,除选定为基准点的温度,其他温度的测定值可能有微小的差异。 7.促使系统状态变化的原因是什么?举例说明 答:系统内部各部分之间的传热和位移或系统与外界之间的热量的交换与功的交换都是促使系统状态变。 8.分别以图参加公路的自行车赛车运动员、运动手枪中的压缩空气、杯子内的热水和正在运行的电视机为研究对象,说明这是什么系统。 答:赛车运动员因为有呼吸有物质交换,运动员 对自行车作功,因此有能量交换,因此赛车运动 员是开口系统。压缩空气只有对子弹作功,因此 为闭口系统。杯子内的热水对外既有能量交换又 有物质交换,因此为开口系统,正在运行的电视 机有能量交换物物质交换,因此为闭口系统 9.家用加热电器是利用电加热水的家用设备,通常其表面散热可忽略。取正在使用的家用电热水器为控制体(不包括电机热器),这是什么系统?把电加热器包括在研究对象内,是什么系统?什么情况下构成孤立的系统? 答:仅仅考虑电热水器为控制体,因有盖,不能与外界进行物质交换但与电机热器有热交换,因此是闭口系统。将电加热器包括在内,无热量交换因此是绝热过程。如果电加热器内电流非外部,而是用电池,即可认为绝热系统。 10.分析汽车动力系统与外界的质能交换情况? 答:汽车发动机有吸气,压缩,作功,排气四个过程,因此吸气过程吸 收外界的空气,过程中既有物质的进入,也有随物质进入带入的能量。压缩后喷油点火,这个过程中压缩点火为能量交换,喷油为物质交换。

C语言 习题八 参考答案

习题八 一、单项选择题 1、C语言程序由函数组成。它的()。 A)主函数必须在其它函数之前,函数内可以嵌套定义函数 B)主函数可以在其它函数之后,函数内不可以嵌套定义函数 C)主函数必须在其它函数之前,函数内不可以嵌套定义函数 D)主函数必须在其它函数之后,函数内可以嵌套定义函数 2、一个C语言程序的基本组成单位是()。 A)主程序 B)子程序C)函数 D)过程 3、以下说法中正确的是()。 A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 4、已知函数abc的定义为: void abc() {... ...} 则函数定义中void的含义是( )。 A)执行abc后,函数没有返回值 B)执行函数abc后,函数不再返回 C)执行函数abc后,可以返回任意类型 D)以上三个答案全是错误的 5、在以下对C语言的描述中,正确的是()。 A)在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参 B)C语言函数既可以嵌套定义又可以递归调用 C)函数必须由返回值,否则不能使用函数 D)C语言程序中有定义关系的所有函数都必须放在同一源文件中 6、以下叙述中错误的是()。 A)在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 B)在C语言中,在定义函数时,实参和对应的形参在类型上只需赋值兼容 C)在C语言中,外部变量的隐含类别是自动存储类别 D)在C语言中,函数形参的存储类型是自动(auto)类型的变量 7、说明语句“static int i=10;”中“i=10”的含义是()。 A)只说明了一个静态变量 B)与“auto i=10;”在功能上等价 C)将变量i初始化为10 D)将变量i赋值为10 8、C语言中的函数()。 A)可以嵌套定义 B)不可以嵌套调用 C)可以嵌套调用,但不能递归调用D)嵌套调用和递归调用均可 9、C语言中函数返回值的类型是由()决定的。 A)return语句中的表达式类型 B)调用该函数的主调函数类型 C)调用函数时临时D)定义函数时所指定的函数类型 10、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是()。 A)地址传递B)值传递 C)由实参传给形参,并由形参传回给实参 D)由用户指定传递方式 11、下列的结论中只有()是正确的。 A)所有的递归程序均可以采用非递归算法实现 B)只有部分递归程序可以用非递归算法实现

递推与递归练习题

练习 1.(用递归做)5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。 问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。 2.(用递归做)商人渡河问题是这样的:有三个商人,三个强盗,和一条船(船 每次只可以载小于等于两个人)他们同在河的一边,想渡过河去,但是必须保证在河的任何一边必须保证商人的数目大于等于强盗的数目,应该怎么过这条河呢? 注意:开始时商人,强盗所在的河的这边设为0状态,另一边设为1状态(也就是船开始时的一边设为0,当船驶到对岸是设为1状态,在这两个状态时,都必须符合条件) 3.(用递推做)猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾, 又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半多一个。到第30天早上想再吃时,见只剩下1个桃子了。求第一天共摘了多少。 4.(用递推做)已知一对兔子每一个月能生一对小兔子,而一对小兔子出 生后第二个月就开始生小兔子,假如一年内没有发生死亡,则以对兔子一年能繁殖成多少对?

答案: 1.#include int age(int n) { if(n==1) return(10); else return age(n-1)+2; } void main() { int n; n=5; printf("The fifth age is %d.\n",age(n)); } 2.#include #include #include struct node /*建立一个类似栈的数据结构并且可以浏览每一个数据点*/ { int x; int y; int state; struct node *next; }; typedef struct node state; typedef state *link; link PPointer1=NULL; link PPointer2=NULL; int a1,b1; int a2,b2; /*栈中每个数据都分为0,1状态*/ void Push(int a,int b,int n) { link newnode; newnode=(link)malloc(sizeof(state)); newnode-> x=a; newnode-> y=b; newnode-> state=n; newnode-> next=NULL; if(PPointer1==NULL) { PPointer1=newnode; PPointer2=newnode; }

相关文档
相关文档 最新文档