- 1、本文档共69页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
练习 建立一个prm.h文件,写一个函数prime(int n),判断素数. 建立一个aa.cpp文件,调用prm.h中的prime函数,输出m到n之间的素数 #define F(x) x - 2 #define D(x) x*F(x) int main() { printf(%d,%d, D(3), D(D(3))) ; return 0; } 带宏定义的程序输出 阅读带宏定义的程序,先全部替换好,最后再统一计算 不可一边替换一边计算,更不可以人为添加括号 D(3) = x*F(x) 先用x替换展开 = x*x-2 进一步对F(x)展开,这里不能加括号 = 3*3-2 = 7 最后把x=3代进去计算 D(D(3)) = D(x*x-2) 先对D(3)用x替换展开, = x*x-2* F(x*x-2) 拿展开后的参数对D进一步进行宏替换 = x*x-2* x*x-2-2 拿展开后的参数对F进一步进行宏替换 = 3*3-2*3*3-2-2 = -13 最后把x=3代进去计算 运行结果:7 -13 结果分析 6.6.3 文件包含 程序文件模块 为了避免一个文件过长,可以把程序分别保存为几个文件。 一个大程序会由几个文件组成,每一个文件又可能包含若干个函数。 保存有一部分程序的文件称为程序文件模块。 程序-文件-函数 大程序-若干程序文件模块 各程序文件模块分别编译,再连接 整个程序只允许有一个main()函数 问题:如何把若干程序文件模块连接成一个完整的可执行程序? 当一个C语言程序由多个文件模块组成时,整个程序只允许有一个main()函数。 为了能调用写在其它文件模块中的函数,文件包含是一个有效的解决方法。 文件包含 格式 # include 需包含的文件名 # include “需包含的文件名” 作用 把指定的文件模块内容插入到 #include 所在的位置,当程序编译连接时,系统会把所有 #include 指定的文件拼接生成可执行代码。 注意 编译预处理命令,以#开头。 在程序编译时起作用,不是真正的C语句,行尾没有分号。 文件包含 将如下的5个函数分别存储在2个.C文件上,要求通过文件包含把它们联结起来。 例6-15 * * * 6.3 数组作为函数参数 在用数组作实参时,以传址方式调用函数,也就是说把实参数组的首地址赋给形参 实际上形参数组和实参数组为同一数组,共同拥有一段内存空间 int sum (int array[ ], int n) { int i, s = 0; for(i=0; in; i++) s += array[i]; return(s); } int main( ) { int i; int b[5] = {1, 4, 5, 7, 9}; printf(%d\n, sum(b, 5)); return 0; } b b[0] b[4] array 求数组元素的和 array[0] array[4] …… 形参数组和实参数组为同一数组,共同拥有一段内存空间 数组作为参数示例1 问题描述: 通过函数实现5个学员成绩的排序。 #include stdio.h #define N 5 void sort( double grade[ ]); int main() { double grade[N]; int i; printf(\n 输入 %d 个学员的成绩:\n,N); for(i=0;iN;i++) scanf(%lf,grade[i]); sort(grade); printf(\n 排序后的成绩为:\n); for(i=0;iN;i++) printf(%5.2f ,grade[i]); printf(\n); } 对形参数组排序,就是对实参数组排序 void sort( double a[N]) { int i,j; float temp; for(i=1;iN;i++) { for(j=0;jN-i; j++) { if(a[j] a[j+1]) { temp = a[j+1]; a[j+1] = a[j]; a[j] = temp; } } } } 传递数组时形参要声明为
文档评论(0)