1 实验七 编译预处理 一、实验目的 学会恰当地使用C语言的预处理功能,使编写出的程序易读、易修改,便于 调试和移植。 二、实验要求 1. 掌握C语言的预处理功能:宏替换、文件包含、条件编译。 2. 编写实验报告(七)。 三、实验内容 7-1 如果要求a,b中的最大值,使用带参数的宏定义编写程序S7-1.C来实现? 7-2 如果将求一个整数是否为偶数的宏定义为: # define EVEN(a) a%2= =0?1:0 程序S7-2.C的宏替换结果是否正确?如果不正确,分析其原因,并写出正 确的形式。 源程序S7-2.C #define EVEN(a) a%2= = 0 ? 1 : 0 main() { if (EVEN (9+1)) printf ("is even"); else printf ("is odd"); } 7-3 填写下表,掌握常用头文件的用途。 头 文 件 用 途 graphics.h math.h string.h stdio.h 7-4 程序S7-4.C中定义了一个带参数的宏swap(x,y),以实现两个整数之间的交 换,并利用它将一维数组a和b的值进行交换。请调试该程序,允许修改 和添加语句,但不得删除整行。 源程序S7-4.C #define swap(x,y) {t=x; x=y; y=t;} 2 main() { int i,a[10],b[10],n; printf("\n Enter n [n<10]:"); scanf("%d",&n); printf("\n Enter a[0] a[1] ... a[%d]:",n); for(i=0;i<n;i++) scanf("%d",a[i]); printf("\n Enter b[0] b[1] ... b[%d]:",n); for(i=0;i<n;i++) scanf("%d",b[i]); swap(a,b); printf("\na[0] a[1] ... a[%d]:",n); for(i=0;i<n;i++) printf("%d",a[i]); printf("\nb[0] b[1] ... b[%d]:",n); for(i=0;i<n;i++) printf("%d",b[i]); }