18、如果变量ⅹx有如下类型 struct char al 如果 sizeof(xx)的值为3,则 union char al Int a2 s yy: 则 sizeof(y)函数的返回值应为 A)2B)4C)5D)定义有错 19、对于enum{RAIN, CLOUD, CLEAR} weather,做如下操作: (1) weather=1 2) weather= CLOUD,下列哪个说法是对的 A)()是错的B)(2)是错的C)()与(2)是一样的D)以上都错 20、设ntal=7,a2=1,xx,进行如下操作x=(a<<1)&-(a2<2)后xx的值为: A)0B)1C)10D)以上都错 0000000000000111 7<<1: 0000000000001110 <<2 0000000000000100 (1<<2) & 0000000000001010 0000000000001010(10) 21、执行=3;if(i>3)if(i<4)i=1 else i=2;后i的值应为 A)1B)2 D)语句错误 22、执行下列程序: #define MA(x, y)((x)*(y)) i=MA(,计+1)7; 后变量i的值应为:
6 18、如果变量 xx 有如下类型: struct { char a1; 1 int a2; 2 } xx; 如果 sizeof(xx)的值为 3, 则: union { char a1; int a2; int a3; } yy; 则 sizeof(yy)函数的返回值应为: A) 2 B) 4 C) 5 D)定义有错 19、对于 enum { RAIN, CLOUD, CLEAR } weather;做如下操作: ⑴ weather=1; ⑵ weather=CLOUD; 下列哪个说法是对的。 A) ⑴是错的 B) ⑵是错的 C) ⑴与⑵是一样的 D)以上都错 20、设 int a1=7, a2=1, xx; 进行如下操作 xx = ( a1<< 1 )&~( a2<<2 )后 xx 的值为: A) 0 B) 1 C) 10 D) 以上都错 7: 0000 0000 0000 0111 7<<1: 0000 0000 0000 1110 1<<2: 0000 0000 0000 0100 ~(1<<2): 1111 1111 1111 1011 & 0000 0000 0000 1010 0000 0000 0000 1010 (10) 21、执行 i=3; if(i>3) if ( i<4 ) i=1 else i=2; 后 i 的值应为: A) 1 B) 2 C) 3 D) 语句错误 22、执行下列程序: #define MA(x, y) ( (x)*(y) ) i=5; i=MA(i,i+1)-7; 后变量 i 的值应为:
A)30B)19C)23D)1 MA(+1)7 (1)*(i+1)-7 (5*6)-7 23、执行下列程序 i=3/2+72=5; 1=45%11+(7>8)?14:21)=14) 后变量访的值应为 A)F0j= B)i=1= i=(32+72)=5)=(1+3)=5)=(4=5)=0; j=1+(21=14)=1+0=1 24、如果 char cc="12345",做 sizeof(cc)后的返回值应为 A)2B)5C)6 sizeof0返回参数对象的字节数:这里的参数是字符数组c,有6个元素 25、如果nti=16,j=23;执行 printf("%x×-%o",ij)后输出为: A)10-23B)10-27C)16-23D)16-27 26、执行下列程序: #define MA(x, y)(x)*(y) int I= i=3MA(i,计+1)+5; printf( %d\n”,) 其输出应为: D)以上都错 3MA(i+1)+5 →3/(1)*(计+1)+5 7
7 A) 30 B) 19 C) 23 D) 1 MA(i,i+1)-7 ➔ ((i) * (i+1)) – 7 ➔ (5 * 6 ) – 7 ➔ 23 23、执行下列程序: int i, j; i = 3/2 + 7/2 == 5; j = 45 % 11 + (((7>8) ? 14:21) == 14); 后变量 i,j 的值应为: A) i=0 j=1 B) i=1 j=1 C) i=0 j=2 D) i=1 j=2 i = ((3/2 + 7/2) == 5) = ((1+3) == 5) = (4 == 5) = 0; j = 1 + (21 == 14) = 1 + 0 = 1 24、如果 char cc[]="12345",做 sizeof(cc)后的返回值应为 A) 2 B) 5 C) 6 D) 1 sizeof()返回参数对象的字节数: 这里的参数是字符数组 cc,有 6 个元素. 25、如果 int i=16, j=23 ; 执行 printf("%x--%o",i, j)后输出为: A) 10--23 B) 10--27 C) 16--23 D) 16--27 26、执行下列程序: #define MA(x, y) (x)*(y) int i = 2; i = 3/MA(i, i+1)+5; printf(“%d\n”, i); 其输出应为: A) 5 B) 8 C) 0 D) 以上都错 3/MA(i,i+1)+5 ➔ 3/(i)*(i+1)+5
→3/2*3+5 →8 27、有一函数 int f(int a)i auto int b=0 static int c=3 b=b+1; return(a+b+c); 如果有nti,j,则执行两次调用:i=f(2),j=f(2)后,i,j值为 )i=7, i=7,j=8 C)1=8 7 注意静态局部变量 static int c;的含义 第一次调用f(2) 开始时:b=0,c=3 执行:b=0+1=1,c=3+1=4 返回:a+b+c=2+1+4=7 调用结束后:静态局部变量c=4保持不变; 第二次调用f(2) 开始时:b=0,c=4 执行:b=0+1=1,c=4+1=5; 返回:a+b+c=2+1+5=8 调用结束后:静态局部变量c=5保持不变; 28、有一函数 int f(char *s)i int k=0: while (s) k=k*10+*s++-0 return (k); 调用f(“1234)的返回结果是 A)“1234”B)1234C)“4321”D)4321
8 ➔ 3/2*3+5 ➔ 8 27、有一函数: int f(int a) { auto int b = 0; static int c = 3; b = b+1; c = c+1; return(a+b+c); } 如果有 int i, j; 则执行两次调用:i=f(2); j=f(2) 后, i, j 值为: A) i = 7, j = 7 B) i = 7, j = 8 C) i = 8, j = 7 D) i = 8, j = 8 注意静态局部变量 static int c;的含义 第一次调用 f(2): 开始时: b = 0, c = 3 执行: b = 0 + 1 = 1, c = 3 + 1 = 4; 返回: a+b+c=2+1+4=7; 调用结束后: 静态局部变量 c=4 保持不变; 第二次调用 f(2): 开始时: b = 0, c = 4 执行: b = 0 + 1 = 1, c = 4 + 1 = 5; 返回: a+b+c=2+1+5=8; 调用结束后: 静态局部变量 c=5 保持不变; 28、有一函数: int f(char *s) { int k = 0; while (*s) k = k*10+*s++-’0’; return(k); } 调用 f(“1234”)的返回结果是: A) “1234” B) 1234 C) “4321” D) 4321
while循环等价于: while(*s)k=k*10+(*s++)-0 该函数的作用将数字字符串转换成相应的整数 29, static int a[ =(1, 2, 31,*p, *q; p=a+l; q=p++; 执行该程序段后,p和q所指向的单元的内容分别为 A)(*p)=1,(*q)=2 B)(p)=2,(q)=3 C)(p)=3,(q)=2 D)以上都错 2 30、 static struct{ int x, y3]; }aB]={{1,2,34},{56,7,8},{9,10,11,12},*p; p 则*(int*)p+1)+2)=? A)3 B)7C)10D)以上都错 6 a[] 10
9 while 循环等价于: while (*s) k = k * 10 + (*s++) – ‘0’; 该函数的作用:将数字字符串转换成相应的整数. 29、static int a[] = {1,2,3}, *p, *q; p = a+1; q = p++; 执行该程序段后, p 和 q 所指向的单元的内容分别为: A) (*p) = 1, (*q) = 2 B) (*p) = 2, (*q) = 3 C) (*p) = 3, (*q) = 2 D) 以上都错 a 30、static struct { int x, y[3]; } a[3] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, *p; p = a; 则*((int *)(p+1)+2) = ? A) 3 B) 7 C) 10 D) 以上都错 p 1 2 3 4 p+1 5 6 7 8 9 10 11 12 1 a[0] p 2 a[1] 3 a[2] a[0] a[1] a[2]