(37) 以下程序的输出结果是 【37】 。 # include
# define FUDGE(y) 2.84+y
# define PR(a) printf(\# define PRINT1(a) PR(a);putchar('\\n') main()
{int x=2; PRINT1(FUDGE(5)*x); } A) 11 B) 12 C) 13 D) 15 二、填空题:
(1)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型态存储单元 【1】 。
(2)以下程序运行后的输出结果是 【2】 . #define S(x) 4*x*x+1 main() {
int i=6,j=8;
printf(\}
(3) 以下程序中, for循环体执行的次数是 【3】 。 #define N 2 #define M N+1 #define K M+1*M/2 main() { int i;
for(i=1;i (4) 以下程序中给指针p分配三个double型动态内存单元,请填空。 # include p=(double *) malloc(【4】); 的动 p[0]=1.5;p[1]=2.5;p[2]=3.5; printf(“%f%f%f\\n”,p[0],p[1],p[2]); } (5) 以下程序的输出结果是【5】 。 #defint MCRA(m) 2*m #define MCRB(n,m) 2*MCRA(n)+m main() { int i=2,j=3; printf(\} (6) 下面程序的运行结果是【6】 。 #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); } (7) 设有如下宏定义 #define MYSWAP(z,x,y) {z=x; x=y; y=z;} 以下程序段通过宏调用实现变量a、b内容交换,请填空。 float a=5,b=16,c; MYSWAP( 【7】 ,a,b); (8) 用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。 st=(char*) 【8】 ; (9) 以下程序的输出结果是 [9] 。 #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); } (10) 若要使指针p指向一个double类型的动态存储单元,请填空。 p= [10] malloc(sizeof(double)); (11) 下面程序的输出是 【11】 。 #define PR(ar) printf(\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));} } } 答案: 一、选择题: 01) C 02) C 03) C 04) D 05) C 06) A 07) A 08) C 09) A 10) D 11) C 12) A 13) A 14) B 15) A 16) D 17) B 18) C 19) B 20) 21) A 22) D 23) C 24) B 25) 26) C 27) D 28) B 29) C 30) 31) A 32) D 33) D 34) A 35) 36) C 37) B 二、填空题: (1) p=(double*)malloc(sizeof(double)) (2) 81 (3) 4 (4) 3*sizeof(double) (5) 16 (6) 1000 10 (7) c (8) Malloc (11) 或malloc(sizeof(char)*11) (9) 7 (10) (double *) (11) 9911 B C D C