函数与宏定义实验报告

函数与宏定义实验

 

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实验代码:

 

 

实验结果:


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实验代码:

 

 

实验结果:

2.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)

⑴函数定义中用了else if语句将多分支语句实现;
⑶函数定义中用了递归函数来实现效果。

3、实验练习:6.3.3.2
3.1问题的简单描述:
(1)用递归的方法计算学生的年龄。已知第1位同学年龄最小为10岁,其余学生一个比另一个大两岁,求第5位学生的年龄。
3.2实验代码:

 

 

实验结果:

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实验代码:

实验结果:

4.3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)

⑴用了两次自身递归以及与if语句的结合,同时也用了函数的定义及相应的函数调用从而将Acm(2,1)与Acm(3,2)的值输出。
⑵用递归函数的使用有点迷糊。

三、什么是辗转相除法

辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。
(百度所得^-^)
四、实验小结
1)通过本次实验,对于流程图的认识更加深入了。
2)对于一些不熟悉的标签有了一定的掌握和运用能力。
五、近期个人学习小结
感觉对于代码的练习比较少,在敲代码的时候很慢而且经常出错。对于流程图的理解还是有很多欠缺。但是随着逐渐练习对于c语言的世界有了更好的感觉。我计划自己结合书本和网课进行复习,希望老师以后在比较难理解的地方加强讲解。

 

 

 

posted @ 2021-07-09 12:09  张鑫U  阅读(81)  评论(0编辑  收藏  举报