开放实验四函数的应用_第1页
开放实验四函数的应用_第2页
开放实验四函数的应用_第3页
开放实验四函数的应用_第4页
开放实验四函数的应用_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C语言程序设计开放实验 石家庄铁道大学信息学院项目4:函数的应用本次实验内容是数组应用部分,通过本次实验,学生将掌握以下内容: 1. 掌握自定义函数的一般结构及定义函数的方法;2. 掌握函数的形式参数、实际参数、函数返回值等重要概念;3. 掌握函数实参与形参间的“值传递”方式;4. 掌握函数声明、函数调用的一般方法;5. 熟练掌握VC程序调试方法,包括断点的设置和取消,以及单步执行跟踪进入函数和跳出函数的方法。实验任务一:断点设置和取消、单步执行跟踪进入函数和跳出函数方法练习程序跟踪调试实例4-1:调试示例(请仔细按以下各步骤进行操作):从键盘输入一个正整数n,计算 n! 的值,要求定义和调

2、用函数fact(n),计算n!。源程序(有错误的程序)运行结果(改正错误后程序的运行结果)Input n: 1010! = 3628800说明:上次实验中我们使用了程序运行到光标位置调试程序,本次实验需要掌握设置断点,以及单步调试进入函数和跳出函数的方法。【操作步骤】:(1)输入源程序,并以error4_1.cpp文件名最终保存在实验4文件夹里,编译程序,出现警告信息:双击该错误信息,箭头指向“f=fact(n);”这一行,信息指出函数“fact”没有定义,而函数“fact”实际上已经定义了,这是为什么呢?因为函数在调用之前,必须先声明。在主调函数的变量定义前面加上函数声明“long fact

3、(int m);”后,重新编译,连接,都正确。(2)调试开始,设置2个断点(断点的作用:程序执行到断点处暂停,使用户可以观察当前的变量或其它表达式的值,然后继续运行),先把光标定位到要设置断点的位置,然后单击编译工具条上的(Inert / Remove Breakpoint (F9)),断点就设置好了(如图4.1所示)。如果要取消断点,只要把光标放到要取消的断点处,单击,这个断点就取消了。图4.1 设置断点(3)单击编译工具条(go (F5)),运行程序,用户输入n的值10后,程序运行到第一个断点位置暂停(如图4.2所示)。图4.2 程序运行到断点位置(4)单击(Step Into (F11)

4、)进入函数fact()调试,箭头表示程序已经执行到函数fact()内(如图4.3所示)。(5)使用,在函数fact()中设置程序的第3个断点(如图4.3所示)。图4.3 进入函数fact( )调试,并在运行时设置断点(6)单击(go (F5)),程序直接运行到断点处,暂停(如图4.4所示),在变量窗口观察到product的值是-2903040,不正确,因为变量product未赋初值,加上语句product=1后,按以上的步骤,重新编译、连接,运行到第3个断点处,变量窗口中product的值正确。图4.4 程序从函数fact()开始直接运行到第3个断点的位置(return前面)(7)现在需要从被

5、调函数返回到主调函数,单击调试工具条中的(Step Out (Shift+F11)),程序返回主调函数继续执行(如图4.5所示)。图6.5 程序回到了主调函数(8)继续单击(go (F5)),程序执行到最后(如图4.6所示),在运行窗口输出10!=3628800,与题目要求的结果一致。图4.6 程序执行到最后(9)单击终止调试图标(Stop Debugging(Shaft+F5)),程序调试结束。程序跟踪调试实例4-2:模仿示例调试以下程序,直到输出正确结果,将修改好的程序以error4_2.cpp为文件名最终保存在实验4文件夹里。(需要存盘)程序功能:利用函数调用求“1!+2!+3!+4!+

6、.+10!”的值源程序(有错误的程序不是语法错误,而是算法错误或逻辑错误)提示:改变main()函数中for循环的循环次数,让程序只求“1!+2!+3!”的值,更容易找到程序的错误。实验任务二:补充完整程序,灵活掌握C语言中使用函数调用解决问题的方法。程序填空实例4-1:编写一函数接受主调函数实参n(这里n=5),并输出如下图形。n的值通过键盘输入,并由主函数中的语句来由实现。将填空后完整的程序以文件名为print1.cpp保存。(需要存盘) 0*0*0*0*0*0*0*0*0【算法提示】: 定义函数printg(),一个形参n,类型为整型,函数无返回值; 找出主、次对角线上0的规律,使用双层

7、循环控制循环n*n次; 循环体内部主、次对角线上打印0,否则打印*; 在主函数中调用函数printg()。【程序框架】:本程序中main()是主调函数,printg()函数上被调函数。程序结构形式如下:#include void printg(int); /* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/void main ( ) int a; couta; printg(a); /* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/ void printg(int n) 这部分可按照算法提示的、步补充完整。 相关提示:如果用i控制行标

8、,用j控制列标,则主对角线的规律是:i=j, 即行标等于列标;次对角线的规律是:i+j=n+1,即行标与列标的和值等于方阵的维数+1;【知识总结】:一般来说,编程时一个问题可以只用一个主函数来处理,但考虑到模块化程序的优越性(主要是大的问题,很小的问题体现不出优越性),所以在实际设计程序时(特别是大的问题),需要设计多个函数(模块),甚至多个文件。虽然我们碰到的一般是小问题,完全可以用一个主函数来处理,但是我们必须从小问题中学会模块化程序设计的思想和方法,为将来处理大问题打下基础。 实验任务三:掌握函数调用的程序的执行过程,会使用调用编写程序;编程实例4-1:写一个判断素数的函数,在主函数输入

9、一个整数,输出是否素数的信息。同时将编写好的程序以文件名primefun.cpp最终保存。(需要存盘)编程实例4-2:设计程序按步骤完成下列任务:(文件名存为paixu.cpp)(1)编写函数sort,对整数数组排序的功能, (2)主函数中,定义数组大小为10,键盘输入。(3)主函数中调用sort函数实现对测试数据排序的功能。要求分别打印出排序前后数组元素的值。编程实例4-3:编写函数fun,函数首部定义为 void fun(int a4),其功能是实现二维数组的转置。main函数中定义二维数组调用fun函数,实现二维数组的转置,并将转置前和转置后的二维数组输出。将编写好的程序以文件名zhua

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论