A)13 B)12 C)8 D)14
二.填空题
1.C提供的预处理功能主要有__宏定义____、__文件包含____、___条件编译__等三种。
2.C规定预处理命令必须以____#______开头。
3.在预编译时将宏名替换成____宏定义中的“字符串”___的过程称为宏展开。
4.预处理命令不是C语句,不必在行末加______;_____。
5.以头文件stdio.h为例,文件包含的两种格式为:_ # include〈stdio.h〉_,_#
include”stdio.h”_。
6.定义宏的关键字是___define______。
7.设有如下运算符:&、|、~、<>、^,则按优先级由低到高的排列顺序为_~、<>、
&、^、|______。
8.设二进制数i为00101101,若通过运算“i^j”,使i的高4位取反低4位不变,则
二进制数j的值应为__11110000____。
9.设无符号整型变量a为6,b为3,则表达式b&=a的值为____2____。
10.整型变量x和y的值相等且为非0值,则表达式x^y的结果为____零____。
二、阅读程序题
1.以下程序输出结果是150。
# include〈stdio.h〉
# define MAX(x,y) (x)>(y)?(x):(y)
main()
{int i,z,k;
z=15;
i=z-5;
k=10*(MAX(i,z));
printf(“%d\n”,k);
}
2.以下程序输出结果是23 。
# include〈stdio.h〉
# define ADD(y) 3.54+y
# define PR(a) printf(“%d”,(int)(a))
# define PR1(a) PR(a);putchar(‘\n’)
main()
{int i=4;
PR1(ADD(5)*i);
}
3.设有如下宏定义:
#define MYSWAP(z,x,y) {z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
float a=5,b=16,c;MYSWAP( c ,a,b);
4.下列程序的输出结果是1000 10。
#define N 10
#define s(x) x*x
#define f(x) (x*x)