![](https://lstatic.shangxueba.com/jiandati/pc/images/pc_jdt_tittleico.png)
实验九 编译预处理 一、实验目的 1. 掌握宏定义的规则,...
实验九 编译预处理 一、实验目的 1. 掌握宏定义的规则,领会带参数宏定义和函数调用的区别. 2. 了解文件包含命令的功能和使用规则。 3. 了解条件编译的特点和功能。 二、实验内容及实验步骤 1. 调试运行下列程序 【示例1】使用不带参数的宏定义 #include <stdio.h> #define PI 3.1415926 void main() {float l,s,r,v; printf("input radius:"); scanf("%f",&r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v); } 【示例2】在宏定义中引用已定义的宏名 #include <stdio.h> #define R 3.0 #define PI 3.1415926 #define L 2*PI*R #define S PI*R*R void main() { printf("L=%f\nS=%f\n",L,S); } 【示例3】使用带参数的宏 #include <stdio.h> #define PI 3.1415926 #define S(r) PI*r*r void main() { float a,area; a=3.6; area=S(a); printf("r=%f\narea=%f\n",a,area); } 【示例4】通过宏展开得到若干个结果 #include <stdio.h> #define PI 3.1415926 #define CIRCLE(R,L,S,V) L=2*PI*R;S=PI*R*R;V=4.0/3.0*PI*R*R*R void main() {float r,l,s,v; scanf("%f",&r); CIRCLE(r,l,s,v); printf("r=%6.2f,l=%6.2f,s=%6.2f,v=%6.2f\n",r,l,s,v); } 2. 利用条件编译实现:如果输入两个实数,则交换后输出;如果输入的是三个实数,则只输出其中最大的数. 三、实验报告要求 写明: 1. 实验目的 2. 实验内容与步骤 3. 编写的程序(题目,经调试、运行后正确的程序) 4. 思考题的解决方法。 5. 总结讨论本次实验的结果和收获。
![](https://lstatic.shangxueba.com/jiandati/pc/images/jdt_panel_vip.png)
![](https://lstatic.shangxueba.com/jiandati/pc/images/no_answer.png)