C语言

答案为B

24. 有定义:int a[5], *p=a;,数组a的首地址为100,则p+2等于( )。 A) 100 B) 102 C) 104 D) 106 答案为C

25. 有定义:int a[5], *p=a;,则*(p+2)等于( )。 A) a[0] B) a[1] C) a[2] D) a[3] 答案为C

26. 有定义:int a[5][4], *p=a[0];,数组a的首地址为100,则p+2*4+3等于( )。 A) 116 B) 118 C) 120 D) 122 答案为D

27. 有定义:int x, *p1=&x, **p2=&p1;,则能够表示变量x值的是( A) p1 B) p2 C) *p2 D) **p2 答案为D

28. 有定义:char *s=”\\t\\”Name\\\\Address\\”\\n”;,那么strlen(s)等于( A) 15 B) 16 C) 17 D) 18 答案为B

29. 已知定义:int b[ ]={1,2,3,4},y,*p=b;则执行y=*p++后,y的值应为((A)1 (B)2 (C)3 (D)4 答案为A

30. 设有以下语句:

char str[4][12]={\; char *strp[4]; int i;

for(i=0;i<4;i++) strp[i]=str[i];

若0<=k<4,下列选项中对字符串的非法引用是( ) (A)strp (B)str[k] (C)strp[k] (D)*strp 答案为A

31. 假定ptr1和ptr2分别是指向某个字符串的指针, 则在下列选项中非法的语句中是( )。

(A)if(ptr1==ptr2) printf(\ (B)*ptr1=48+(ptr1-ptr2); (C)*(ptr1+=2)=*ptr2; (D)*(ptr1-1+ptr2)=getchar(); 答案为D

32. 执行下列程序片段后,变量m的值是( ) int a[]={7,4,6,3,10}; int m=10,k,*ptr=&a[0]; for (k=0;k<5;k++)

m=*(ptr+k),m?*(ptf+k):m; 答案为A

33. 下述程序执行后,变量i的结果是( ) int i;

char *s=\for (i=0;*s++;i++)

A.7 B.8 C.9 D.10 答案为B

34. 若有以下说明和语句,那么对c数组元素的引用是( )。

)。 )。 )。 int c[4][5],(*cp)[5];

cp=c;

(A) cp+1 (B) (cp+3) (C) *(cp+1)+3 (D) *(*cp+2) 答案为D

35. 设有如下程序: #include void main()

{ int **k,*j,i=100; j=&i; k=&j;

printf(“%d\\n”,**k); }

上述程序的输出结果是( )。

(A)运行错0 (B)100 (C)i的地址 (D)j的地址 答案为B

36. 已知:char s[4] = \ char *p; 执行语句序列p = s;printf(\后,其输出为( )。 A)字符’c’ B)字符’b’ C)字符’a’ D)字符’d’ 答案为D

37. 已有定义 int k=2; int *ptr1, *ptr2, 且ptr1和ptr2均已指向变量k , 下面不能执行的赋值语句是( )

A) k=*ptr1+*ptr2; B) ptr2=k;

C) ptr1=ptr2; D) k=*ptr1*(*ptr2); 答案为B

38. 若有定义int i=2,a[10],*p=&a[i];则与*p++ 等价的是( )。 A)a[i++] B)a[i]++ C)a[i] D)a[++i] 答案为A

39. 以下程序的输出结果是( )。 void main()

{ int a=5,*p1,**p2; p1=&a,p2=&p1; (*p1)++;

printf(\

}

A)5 B)4 C)6 D)不确定

答案为C

40. 设有定义“int a=3,b,*p=&a;”,则下列语句中使b不为3的语句是( )。

(A) b=*&a; (B) b=*a; (C) b=a; (D) b=*p; 答案为B

41. 若要用下面的程序段使指针变量p指向一个整型变量的动态存储单元: int *p;

p=_________malloc(sizeof(int)); 则下画线上应填入( ) A)int B)int * C)(* int) D)(int *) 答案为D

联系客服:779662525#qq.com(#替换为@)