当前位置:文档之家› 第九章 编译预处理

第九章 编译预处理

第九章编译预处理
一、单选题
1.以下对宏替换的叙述不正确的是
A)宏替换只是字符的替换B)宏替换不占运行时间
C)宏名无类型,其参数也无类型
D)带参的宏替换在替换时,先求出实参表达式的值,然后代入形参运算求值2.宏定义#define PI 3.14中的宏名PI代替
A)一个单精度实数)B)一个双精度实数
C)一个字符串 D)不确定类型的数
3.有以下宏定义
#define k 2
#define X(k) ((k+1)*k)
当C程序中的语句y = 2 * (K + X(5));被执行后,
A)y中的值不确定 B)y中的值为65
C)语句报错 D)y中的值为34
4.以下程序的输出结果是
#define MIN(x, y) (x) < (y) ? (x) : (y)
main()
{ int i , j, k;
i = 10; j = 15;
k = 10 * MIN(i, j);
printf(“%d\n”, k);
}
A)15 B)100 C)10 D)150
5.以下程序中的for循环执行的次数是
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
main()
{ int i;
for(i = 1; i <= NUM; i++);
pritnf(“%d\n”, i );
}
A)5 B)6 C)8 D)9
6.以下程序的输出结果是
#include “stdio.h”
#define FUDGF(y) 2.84 + y
#define PR(a) printf(“%d”, (int) ( a ) ) #define PRINT1(a) PR(a); putchar(‘\n’)
main()
{ int x = 2;
PRINTF1(FUDGF(5) * X);
}
A)11 B)12 C)13 D)15
7.以下程序的输出结果是
#define FMT “%d,”
main()
{
int b[][4] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
printf(FMT, *(*(b+1)+1));
printfFMT, b[2][2]);
}
A)1,11, B)1,11 C)11,21, D)13,21
8.若有宏定义如下:
#define MOD(x,y) x%y
则执行以下程序段的输出为
int z, a = 15, b = 100;
z = MOD(b, a);
printf(“%d\n”, z++);
A)11 B)10 C)6 D)5
二、填空题
1.有以下宏定义和赋值语句,宏置换后的赋值语句的形式是。

#define A 3+5
……
p = A * A;
2.以下程序的输出结果是。

#define PR(ar) printf(“ar = %d“, ar)
main()
{ int j, a[] = { 1, 3, 5, 7, 9, 11, 13, 15}, *p = a + 5;
for(j = 3; j ; j--)
switch( j )
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p) );
}
}
3.以下程序的执行结果是。

#define DOUBLE(r) r*r
main()
{
int y1 = 1, y2 = 1, t;
t = DOUBLE(y1 + y2);
printf(“%d\n”, t);
}
4.以下程序的执行结果是。

#define PRINT(V) printf(“V = %d\t”,V)
main()
{
int a, b;
a = 1;
b = 2;
PRINT(a);
PRINT(b);
}
第九章编译预处理
一、选择题
1.【A】【B】【C】【D】 2.【A】【B】【C】【D】 3.【A】【B】【C】【D】4.【A】【B】【C】【D】 5.【A】【B】【C】【D】 6.【A】【B】【C】【D】7.【A】【B】【C】【D】 8.【A】【B】【C】【D】
二、填空题
1. p = 3+5*3+5;
2. ar = 9 ar = 9 ar = 11
3. 3
4. V = 1 V = 2。

相关主题