- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.5 宏 -----不带参数的宏 注意:宏不扩展引号中的宏 2.5 宏带--参数的宏 带参数的宏一般形式: #define 宏名(参数表) 字符串 带参数的宏在展开时,不是进行简单的字符串替换,而是进行参数替换。 例如: 2.5 宏带--参数的宏 2.5 宏带--参数的宏 例如: #define S(r) PI*r*r area = S(a+b); area = PI*a+b*a+b;(错误) 带参数的宏展开时,用实参字符串替换形参字符串,注意可能发生的错误。比较好的办法是宏定义的形参加括号 例如 #define S(r) PI*(r)*(r) area = S(a+b); area = PI*(a+b)*(a+b); 2.5 宏带--参数的宏 返回多个值的宏定义。 #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4/3*PI*R*R*R main() { float r,l,s,v; /*半径、圆周长、圆面积、球体积 */ scanf(%f,r); CIRCLE(r,l,s,v); /*l=2*3.1415926*r;s=3.1415926*r*r;v=4/3*3.1415926*r*r*r;*/ printf(r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n,r,l,s,v);} 2.5 宏带--参数的宏 例题:计算机函数值:f(x,y)=[x3+x2][(y+1)3+(y+1)2],要求从键盘输入x、y #include “stdio.h” #define F(x) (x)*(x)*(x)+(x)*(x) main( ) {double f,x; printf(“input x,y:”); scanf(“%f,%f”,x,y); f=F(x)*F(y+1); printf(“f=%f\n”,f);} 提问:是否有问题? 结论:在使用带参数的宏定义时,一般应该将宏定义字符串中的参数和整个 字符串也括起来, 即:#define F(x) ((x)*(x)*(x)+(x)*(x)) 本讲重点提示 类型转换(自动和强制) 复合算术运算符,自增和自减运算符 复合赋值运算符 逻辑运算符和关系运算符的应用 参数宏的定义 下次课的内容 面向过程编程的基本结构 顺序结构程序设计 分支程序设计 参考教材第3章内容 课后练习 (1)完成教材P42第5、6题,以及P85的第8题。在第7周交给作业 (2)要求熟读教材的第2章和第3章的3.6节 第3次实验要求 (1)熟悉《实验指导》的第15章,重点了解如何调试程序(15.3.2节)和建立多个文件的方法(15.4节).总结如何设置断点?单步运行?如何在一个工程建立3个源文件? (2)完成教材的P42第7题,并按下列要求修改 a)将第1行语句后加“;”会出什么错? b)将第2行语句using…. 去掉出什么错? c)将第3行int …去掉出什么错? d)将第4行i改为I会出什么错? e)将第5行最后的“;”改为全角“;”会出什么错? f)将第6行中的“j”改为“J”会出什么错? g)将第7行中++i改为(++i)会有不一样吗?为什么 h)将第8行中(++i)改为++i会有不一样吗?为什么 k)将第9行中改为会有不一样吗? j)将第10行去掉return 0会有不一样吗? (3直接上机编写程序,完成P42第8题. 本次实验需要提交实验报告:第8周交。 基本格式:实验目标:学习程序调试,实验内容: 实验结果: a)将第1行语句后加“;”会出什么错? Compiling... 456.cpp d:\autoupdate\01212\1033\456.cpp(1) : warning C4067: unexpected tokens following preprocessor directive - expected a newline 456.obj - 0 error(s), 0 warning(s) b)将第2行语句using…. 去掉出什么错? Compiling... 456.cpp D:\AutoUpdate\01212\1033\456.cpp(2) : error C2059: syntax error : ; D:\AutoUpdate\01212\1033\456.cpp(9) : error C2065: cout : undeclared identifier D:\AutoUpdate\01212\1033\
文档评论(0)