大学C语言第7章函数1探讨.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例7.23 计算4(4x+y2)+5(x2-5y) /*a程序(字符串不加圆括号)*/ #include stdio.h #define M 4*x+y*y #define N x*x-5*y void main() {float x,y,z; scanf(%f,x); scanf(%f,y); z=4*M+5*N; printf(z=%.2f\n,z); } 运行过程与结果: 2↙ 3↙ z=46.00 运行过程与结果: 2↙ 3↙ z=13.00 /*b程序(字符串加圆括号)*/ #include stdio.h #define M (4*x+y*y) #define N (x*x-5*y) void main() { float x,y,z; scanf(%f,x); scanf(%f,y); z=4*M+5*N; printf(z=%.2f\n,z); } a程序:z=4*M+5*N =4*4*x+y*y+5*x*x-5*y =4*4*2+3*3+5*2*2-5*3 =32+9+20-15 =46 b程序:z=4*M+5*N =4*(4*x+y*y)+5*(x*x-5*y) =4*(4*2+3*3)+5*(2*2-5*3) =4*17-5*11 =68-55 =13 例7.24 对“输出格式”进行宏定义。 #include stdio.h #define P printf #define D %d\n #define F %.2f\n #define S %s\n main() { int x=5, y=8; float a=3.8,b=9.7; char str1[]=China,str2[]=Beijing; P(D F,x,a); P(D S,y,str1); P(F S,b,str2); } 运行结果为: 5 3.80 8 China 9.70 Beijing 例7.24可改为: 还可以将“输出格式”编辑成头文件,只要将该头文件包含进源程序中,就可应用头文件中的“输出格式”。 建头文件的过程与C源程序相同,只是保存时将扩展名设为.h即可。 #include stdio.h #include format.h main() { int x=5, y=8; float a=3.8,b=9.7; char str1[]=China,str2[]=Beijing; P(D F,x,a); P(D S,y,str1); P(F S,b,str2); } /*头文件format.h*/ #define P printf #define D %d\n #define F %.2f\n #define S %s\n 2.有参数宏定义的应用 对于带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。例如: #define Y(x) x*x-3*x+4 /*宏定义*/ k=Y(5); /*宏调用*/ k=5*5-3*5+4 (1)空格问题:宏名和形参表之间不能有空格出现,有空格认为是无参宏定义,会将空格后的字符都当作替换字符串的一部分。例如,若Y与(x)之间有空格: #define Y (x) x*x-3*x+4 /*宏定义*/ k=Y(5); /*宏调用*/ 则k=Y(5)的宏展开后的语句为: k=(x) x*x-3*x+4(5) 显然是错误的。 (3)在宏定义中,字符串内的形参通常要用括号括起来以避免出错,见下面例题。 /*7.25b*/ #include stdio.h #define S(x) x*x main() {int a=2,sum; sum=S(a)+S(a+2)+S(a+4); printf(sum=%d\n,sum); } 运行结果为: sum=26 【例7.25】计算22+42+62的和。 /*7.25a*/ #include stdio.h #define S(x) (x)*(x) main() {int a=2,sum; sum=S(a)+S(a+2)+S(a+4); printf(sum=%d\n,sum); } 运行结果为: sum=56 7.25a sum=S(a)+S(a+2)+S(a+4)=a*a+(

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档