实验5 函数

  • 格式:doc
  • 大小:40.50 KB
  • 文档页数:3

南昌大学实验报告
学生姓名: 学 号: 专业班级:
实验类型:□ 验证□综合 □√ 设计 □ 创新 实验日期: 实验成绩:

一、实验名称
实验5 函数
二、实验目的
1.掌握函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的
对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法;

2.掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法;
3.在编程过程中加深理解函数调用的程序设计思想。
二.实验内容
1.多模块的程序设计与调试的方法;
2.函数的定义和调用的方法;
3.用递归方法进行程序设计。
三.实验环境
PC微机
DOS操作系统或 Windows 操作系统
Turbo C 程序集成环境
四.实验内容

1.编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num
是素数,返回该数;否则返回0值。

要求: (1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。
输出格式为:num is prime或num is not prime。

(2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是
否正确。

2.编写一个计算组合数的函数combinNum(int m,int n)。计算结果由函数返回。
计算组合数的公式是:
c(m,n)=m!/(n!*(m-n)!)
要求:
(1)从主函数输入m和n的值。对m>n、mcombinNum(m,n),在主函数内输出结果值。

(2)对m>n、m(3)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接
和运行。

3.已知xshxshshxshy32)1(,其中,sh为双曲正弦函数,即2)(tteetsh,编写一个程
序,输入x的值,求y的值。
4.整数a,b的最大公约数是指既能被a整除又能被b整除的最大整数。整数a,b的最小
公倍数是指既是a的倍数又是b的倍数的最小整数。编写两个函数,一个函数gcd()的功能
是求两个整数的最大公约数,另一个函数mul()的功能是求两个整数的最小公倍数。

要求:
(1)两个整数在主函数中输入,并在主函数中输出求得的最大公约数和最小公倍数。
(2)首先将两个整数a和b作为实参传递给函数gcd(),求出的最大公约数后,由
函数gcd()带值返回主函数,然后将最大公约数与两个整数a、b一起作为实参传递给函
数mul(),以此求出最小公倍数,再由函数mul()带值返回主函数。

(3)提示:求最大公约数一般采用辗转相除法(Euclid算法),方法如下:分别让变
量m和n存储两个数的值(这里是a和b)。如果n为0,那么停止操作,m中的值就是最大
公约数(GCD),否则计算m除以n的余数,把n保存到m中,并把余数保存到n中。然后
重复上述过程,每次都先判断n是否为0.

五、实验数据及处理结果
/*写出各个习题的算法(用自然语言分步表示或流程图表示)、程序、结果并能
对结果的正确性及产生的问题进行适当分析,重点说明实验遇到的难点及解决办
法。注意:每题以下面格式列出并请注意代码风格规范,请参看相应文件。
格式:
[习题1] /*即:题目内容*/
[问题分析或算法设计] /*用自然语言描述设计思路或用伪语言、流程图等描述算法,两者
选一*/
[数据需求] /*写出程序中需要使用的输入数据和输出数据(变量定义)及相关公式*/
[程序实现] /*此部分写出源程序,应有适当的注释*/
[程序测试] /*选取一些样例数据验证程序的正确性,给出结果并用截图说明*/
[错误信息解释或原因分析] /*程序若始终得不到正确结果,请给出错误原因分析,否则此
部略去*/ 红色文字供提示用,阅读完请在正式撰写实验报告时删去!!!

六.简答题
1. 小结函数的定义及调用方法;
2. 小结函数中形参和实参的结合规则;
3. 编写和调试包含多模块的程序时,容易出现什么样的错误?根据自己的实践总结一
下。

七、选做题
1.根据实验内容第4题,修改函数gcd(),函数gcd()采用递归调用的编写方法,两个整
数a和b的最大公约数的递归公式是:

如果b=0,那么gcd(a,b)=x,否则gcd(a,b)= gcd(b,a%b)。 然后将最大公约数与
两个整数a、b一起传递给函数mul(),求出最小公倍数,再由函数mul()将最小公倍数
返回主函数。

2 . 根据实验内容第4题,修改程序,采用全局变量的处理方法,将最大公约数和最小公倍数
都设为全局变量,分别用函数gcd()和函数mul()求最大公约数和最小公倍数,但其值
不是由函数返回,而是通过全局变量在函数之间传递的特性将结果反映在主函数中。

七、实验总结