11. 下列程序由两个文件组成,其运行结果是 。 /* 文件1 */
#include <>
int x=10;int y=10;
extern void sub(); add: y=25; sub:y=5; main: x=25; void add(void)
{ int y=5; y=x+10; x*=2; printf(“add:y=%d; ”,y);} main()
{ x+=5; add(); sub();printf(“main:x=%d; main:y=%d\\n”,x,y);} /* 文件2 */
extern int x; void sub(void)
{ int y=5; x-=y; printf(“sub:y=%d; ”,y);} 12. 下列程序由两个文件组成,其运行结果是 。 /* 文件1 */
#include <>
static int x=2;int y=3; in add1 x=4 y=6in add2 x=20 extern void add2(); void add1(); y=8 main()
{ add1(); add2();add1();add2();printf(“in main x=%d y=%d\\n”,x,y);} void add1(void)
{ x+=2; y+=3; printf(“in add1 x=%d y=%d”,x,y);} /* 文件2 */
static int x=10; void add2(void)
{ extern int y; x+=10; y+=2; printf(“in add2 x=%d y=%d\\n”,x,y); }
习题九 编译预处理
一. 选择题
1—10: DDCBC CABBB 11-20: BBCBB 二. 填空题
1. 下列程序的输出结果是 1000 10 。
#define N 10 #define s(x) x*x #define f(x) (x*x) main()
{ int i1,i2;i1=1000/s(N);i2=1000/f(N);printf(“%d %d\\n”,i1,i2);}
2. 设有如下宏定义:
#define MYSWAP(z,x,y) {z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。 float a=5,b=16,c;MYSWAP( c ,a,b); 3. 下列程序的输出结果是 11 。
#define NX 2+3 #define NY NX*NX main()
{ int i=0,m=0; for(;i
#define MAX(x,y) (x)>(y)(x):(y) main()
{ int a=5,b=2,c=3,d=3,t; t=MAX(a+b,c+d)*10; printf(“%d\\n”,t);} 5. 下列程序的输出结果是 MIN 。
#define MAX(a,b) a>b #define EQU(a,b) a==b #define MIN(a,b) a
{ int a=5,b=6; if(MAX(a,b)) printf(“MAX\\n”); if(EQU(a