函数与宏定义实验报告
函数与宏定义实验
C程序设计实验报告
实验项目:
姓名:谢梅芳
实验地点:1教524
实验时间:2021.5.27
一、实验目的与要求
⑴熟练地掌握函数的定义方法和调用规则。
⑵掌握再C语言程序种主调函数和被条用函数之间进行数据传递的规则。
⑶了解函数的返回值及其类型,并正确使用它。
⑷了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念。
⑸练习递归函数的使用。
二、实验内容
1、实验练习:6.3.2习2
1.1问题的简单描述:
⑴编制一个函数sab(a,b,n),.其功能为利用复化梯形公式开算定积分:
其中,n为对区间[a,b]的等分数。要求该函数在一个独立的文件中。
(2)编制一个主函数及计算被积函数值的函数f(x),在主函数中调用(1)中的函数sab(a,b,n)计算并输出下列积分值:
取n=10。要求主函数与函数f(x)在同一文件中。
(3)编制另一个主函数及计算被积函数值的函数f(x),在主函数中调用(1)中的函数sab(a,b,n)计算并输出下列积分值:
取n=8。要求主函数与函数f(x)在同一文件中。
(4)要求画出模块sab(a,b,n)的流程图。设定积分为:
则复化梯形求积公式为:
其中,h=(b-a)/n,x=a+kh。
1.2实验代码:
![](https://img2020.cnblogs.com/blog/2318568/202107/2318568-20210709115815702-2033920311.png)
实验结果:
1.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
⑴不明白如何将三个代码联系起来从而编译运行
⑵自定义函数用了外部函数,单独写出来从而与主函数联系;
⑶主函数与外部函数之间用了递归函数的调用。
2、实验练习:6.3.2.3
2.1问题的简单描述:
(1)根据方法说明,编制计算Ackerman函数的递归函数Ack(n,x,y)。
(2)编写一个主函数,由键盘输入n、x、y,调用(1)中的函数Ack(n, x, y),计算Ackerman函数。
(3)在主函数中,输人之前要有提示,并检查输人数据的合理性,若输人的数据不合理,则输出出错信息。输出要有文字说明。
(4)输入(n, x, y)= (2,3,1)并运行该程序。然后自定义几组数据,再运行该程序。
2.2实验代码:
![](https://img2020.cnblogs.com/blog/2318568/202107/2318568-20210709120105531-1124277201.png)
实验结果:
2.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
⑴函数定义中用了else if语句将多分支语句实现;
⑶函数定义中用了递归函数来实现效果。
3、实验练习:6.3.3.2
3.1问题的简单描述:
(1)用递归的方法计算学生的年龄。已知第1位同学年龄最小为10岁,其余学生一个比另一个大两岁,求第5位学生的年龄。
3.2实验代码:
![](https://img2020.cnblogs.com/blog/2318568/202107/2318568-20210709120236074-1518191200.png)
实验结果:
3.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
⑴用了递归函数从而层层深入至第五个同学,进而将其年龄输出。
4、实验练习:6.3.3.3
4.1问题的简单描述:
⑴定义递归函数:当m=0时,Acm(m,n)=n+1;当n=0时,Acm(m,n)=Acm(m-1,1);当n>0且m>0时,Acm(m,n)=Acm(m-1,Acm(m,n-1);
其中,m、n为正整数。设计程序求Acm (2,1)和Acm (3,2)。
4.2实验代码:
实验结果:
![](https://img2020.cnblogs.com/blog/2318582/202105/2318582-20210527211312033-1458453935.png)
4.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)
⑴用了两次自身递归以及与if语句的结合,同时也用了函数的定义及相应的函数调用从而将Acm(2,1)与Acm(3,2)的值输出。
⑵用递归函数的使用有点迷糊。
三、什么是辗转相除法