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]);
}