[第10章实验程序结构与递归函数
2009 -2010学年第 2 学期
实 验 报 告
实验课程名称 C语言程序设计基础实验
专 业 班 级
学 生 姓 号
学 生 姓 名
实验指导老师
浙江大学城市学院实验报告
实验项目名称 实验10 程序结构与递归函数
实验成绩 指导老师(签名) 日期
一. 实验目的和要求
了解结构化程序设计基本思想。
掌握多个函数的组织方法。
掌握函数嵌套的使用方法。
熟悉递归函数的编程方法。
二. 实验内容、原理及实验结果与分析
说明:实验指导教师可根据教学内容指定题目。
1. 编程题1 函数程序设计。
(10012)编写一个函数,利用参数传入一个3位数number,找出101~number之间所有满足下列两个条件的数:
它是完全平方数,又有两位数字相同,如144、676等,函数返回找出这样的数据的个数。请同时编写主函数。
例:(括号内为说明)
输入
3(repeat=3)
150
500
999
输出
count=2
count=6
count=8
【源程序】
【实验结果与分析】
2. 编程题2
(10014)计算函数P(n,x)。
输入一个正整数repeat (0
输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。
1 (n=0)
p(n, x) = x (n=1)
((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n (n>1)
例:括号内是说明
输入
3 (repeat=3)
0 0.9(n=0,x=0.9)
1 -9.8(n=1,x=-9.8)
10 1.7(n=10,x=1.7)
输出
p(0, 0.90) = 1.00
p(1, -9.80) = -9.80
p(10, 1.70) = 3.05
【源程序】
【实验结果与分析】
3. 编程题3
(10015)计算函数Ack(m,n)。
输入一个正整数repeat (0
输入两个整数m和n(m>=0且n>=0),输出函数Ack(m,n)的值。
在m>=0和n>=0时Ack(m, n)定义为:
Ack(0,n) = n+1
Ack(m,0) = Ack(m-1,1)
Ack(m,n) = Ack(m-1, Ack(m,n-1)) m>0且n>0
例:括号内是说明
输入
4 (repeat=4)
0 3
2 0
2 3
0 0
输出
Ackerman(0,3)=4
Ackerman(2,0)=3
Ackerman(2,3)=9
Ackerman(0,0)=1
【源程序】
【实验结果与分析】
4. 编程题4 十进制转换二进制。
(10016)输入一个正整数 repeat (0
输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。
例如,调用dectobin(10),输出1010。
输出语句:printf("%d");
例:括号内是说明
输入:
3 (repeat=3)
15
100
0
输出:
1111
1100100
0
【源程序】
【实验结果与分析】
5. 编程题5 递归函数程序设计求Fabonacci数列。
(10017)设计求Fabonacci数列。
输入一个正整数 repeat (0
用递归方法编写求Fabonacci数列项的函数,返回值为长整型, 并写出相应的主函数。Fabonacci数列的定义为:
f(n)=f(n-2)+f(n-1) (n>=2)