《C语言程序设计》实验报告
实验名称:编译预处理
系别: 计算机系专业:计算机科学与技术班级:五班
姓名: 学号:
实验日期: 2011 年 11 月 18 日
教师审批签字:
实验6 C编译预处理
⒈实验目的
⑴掌握宏定义的规则,领会带参数宏定义和函数调用的区别。
⑵了解文件包含命令的功能和使用规则。
⑶了解条件编译的特点和功能。
⒉实验内容或实验题目
A 宏定义及其应用
⑴以下程序的运行结果是____。
#define MIN(x,y) (x)<(y)?(x):(y)
#include “stdio.h”
void main()
{ int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
⑵若有宏定义如下:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是____。
int a;a=Y;
printf("%d\n",Z);
printf("%d\n",--a);
⑶请读程序:
#include <stdio.h>
#define MUL(x,y) (x)*y
main()
{ int a=3,b=4,c;
c=MUL(a++,b++);
printf("%d\n",c);
}
上面程序的输出结果是______。
⑷以下程序的运行结果是_____.
#include “stdio.h”
void main()
{ inc x();
incy();
incx();
incy();
incx();
incy();
}
incx()
{ int x=0;
printf("x=%d\t",++x);
}
incy()
{ static int y=0;
printf("\ny=%d\n",++y);
}
B “文件包含”处理测试
⑴文件format.h包含以下内容:
#define PR printf
#define NL "\n"
#define D "%D"
#define D1 D NL
#define D2 D D NL
#define D3 D D D NL
#define D4 D D D D NL
#define S "%S"
⑵文件file1.C包含以下内容:
#include "format.h"
void main()
{ int a,B,C,D;
char string[]="CHINA";
a=1;B=2;C=3;D=4;
PR(D1,a); PR(D2,a ,B); PR(D3,a ,B ,C); PR(D4,a ,B ,C ,D); PR(S ,string);
}
调试并察看运行结果。
注意文件保存的路径。
⒊ 算法说明
(用文字或流程图说明。
)
(2)
⒋ 程序清单
A 宏定义及其应用 (1)
#define MIN(x,y) (x)<(y)?(x):(y) #include "stdio.h" void main()
{ int i=10,j=15,k; k=10*MIN(i,j); printf("%d\n",k); }
(2) #define X 5 #define Y X+1
B
#include "stdio.h"
main()
{
int a;a=Y;
printf("%d\n",Z);
printf("%d\n",--a);
}
(3)#include <stdio.h>
#define MUL(x,y) (x)*y
main()
{ int a=3,b=4,c;
c=MUL(a++,b++);
printf("%d\n",c);
}
(4)#include "stdio.h"
incx();
incy();
void main()
{ incx();
incy();
incx();
incy();
incx();
incy();
}
incx()
{ int x=0;
printf("x=%d\t",++x);
}
incy()
{ static int y=0;
printf("\ny=%d\n",++y);
}
B “文件包含”处理测试
#define PR printf
#define NL "\n"
#define D "%d"
#define D1 D NL
#define D2 D D NL
#define D4 D D D D NL
#define S "%s"
#include "format.h"
#include "stdio.h"
void main()
{ int A,B,C,d;
char string[]="CHINA";
A=1;B=2;C=3;d=4;
PR(D1,A);
PR(D2,A,B);
PR(D3,A,B,C);
PR(D4,A,B,C,d);
PR(S,string);
}
⒌运行结果
(包括原始数据、相应的运行结果和必要的说明。
)
A 宏定义及其应用
(1)
(2)
(3)
(4)
B “文件包含”处理测试
⒍分析与思考
调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会;其他算法的存在与实践等。
若最终未完成调试,要认真找出错误并分析原因等。
(1)在宏定义中,注意有无括号有很大的区别,在宏展开时并不进行任何计算,它只是
用实参对形参进行原样替换,而不是像函数调用一样,先进行实参,再使用它的值去替换形参,所以计算时以符号的优先进行计算。
(2)在文件包含测试中,注意自定义函数保存的路径,以及定义的一一对应关系。