实验6 函数与编译预处理.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6 函数与编译预处理

实验 掌握自定义函数的一般结构及定义函数的方法; 掌握函数的形式参数、实际参数、函数返回值等重要概念; 掌握函数实参与形参间的“值传递”方式; 掌握函数声明、函数调用的一般方法; 掌握模块化程序设计思想,会采用C语言中函数进行模块化程序设计; 掌握全局变量和局部变量作用域以及全局变量和局部变量的使用方法; 掌握函数的嵌套调用的程序的执行过程,会使用嵌套调用设计程序; 掌握使用函数递归调用的程序的执行过程,会使用递归程序解决实际问题; 理解宏的概念,掌握宏定义。了解文件包含的概念,掌握其用法; 学习对多文件程序的编译和运行; 熟练掌握VC程序调试单步执行跟踪进入函数和跳出函数的方法实例源程序(有错误的程序) 运行结果(改正错误后程序的运行结果) Input n: 10 10! = 3628800 说明:实验五中我们使用了程序运行到光标位置调试程序,本次实验需要掌握设置断点,以及单步调试进入函数和跳出函数的方法。 【操作步骤】: (1)输入源程序,并以error6_1.c文件名最终保存在实验6文件夹里,编译long fact(int m);”后,重新编译 可见VC++系统对.c文件和.cpp文件在进行编译程序实例1!+2!+3!+4!+...+10!”的值 (参见实验教材73页程序填空题第(2)小题) 源程序(有错误的程序——不是语法错误,而是算法错误或逻辑错误) 提示:改变main()函数中for循环的循环次数,让程序只求“1!+2!+3!”的值,更容易找到程序的错误。 程序跟踪调试实例调试【】‘a in function sum 在sum函数中重复声明了a 造成此错误的原因是 定义sum( )函数错误,如何修改,请参照ppt课件的C6函数与编译预处理的第7~8的内容; ⑤ 修改完成以后,编译成功,但连接时(即按compile菜单下的Make EXE file选项)时,会出现如下错误信息提示: Undefined symbol _sam in module example2.c 在example2.c模块中没有定义符号sam 造成此错误的原因就是:被调函数的函数名与主调函数中调用被调函数的函数名不一致。修改方法可将主调函数中的sam改成sum以保持一致; ⑥ 修改后重新编译,出现信息提示:Too few parameters in call to ‘sum’ in function main 主函数中调用sum函数时参数太少 因为被调函数sum(int a, int b)中有两个参数,主调函数main()中的sum(x+y)只有一个参数。而实 参应该与形参保证三一致:即顺序一致,类型一致,数量一致。 ⑦ 因为程序中scanf(%d,%d, a, b)中两个%d之间有逗号,所以运行程序时输入的两个整数之间必 须用逗号隔开,而不是用空格隔开。 [实验任务二]:补充完整程序,灵活掌握C语言中使用函数调用解决问题的方法。 注意: 这里提供了以填源程序参考清单源程序清单实例 程序填空实例)【】【】#include stdio.h void printg(int); /* 因为被调函数printg()在主调函数main()之后,需对被调函数声明*/ void main ( ) { int a; printf(please input a number: \n); scanf(%d, a); printg(a); /* 在主调函数main()中调用被调函数printg(a) ,其中a为实参*/ } void printg(int n) { 这部分可按照算法提示的①、②、③步补充完整。 相关提示:如果用i控制行标,用j控制列标,则 主对角线的规律是:i==j, 即行标等于列标; 次对角线的规律是:i+j==n+1,即行标与列标的和值等于方阵的维数+1; } 【】实例 将补充完整的程序以文件名reverse.c最终保存在实验6文件夹里。 [实验任务三]:掌握函数的嵌套调用和递归调用的程序的执行过程,会使用嵌套调用和递归调用编写程序; 编程实例实例实例实例实例的值。 【】实例 编写程序实现输入x,y,z,则程序输出f(x, y, z)的值。 将编写好的程序以文件名value.c最终保存在实验6文件夹里。(需要存盘) 【】实例实例某个整数N的所有因子之和等于N的倍数,则称N为多因子完数,如28其因子之和1+2+4+7+14+28=56=2×28,28是多因子完备数。求[1,200]的多因子完备数的个数。编写求某个数因子之和的函数,编写找[1,200]多因子完备数的个数的函数,用函数嵌套调用实现。实例给小学生出加法考试题编写一个程序,给学生出一道加法运算题,然后判断学生输

文档评论(0)

mydoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档