文档详情

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

发布:2016-09-27约字共74页下载文档
文本预览下载声明
例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+(
显示全部
相似文档