C) *&P D) &*P
B
31. 设有定义语句\ s[10],*p1=s,*p2=s+5;\,下列表达 式中错误的是
A) p1=0xffff B) p2-- C) p1-P2 D) p1<=p2
A
32. 设有下列定义语句\ s[ ]={\,*p=s;\,下列表达 式中错误的是
A) *(p+2) B) *(s+2)
C) p=\ D) s=\D
33. 设有定义语句\ d[3][5]={{1},{2},{3}},(*p)[5]=d;\, 则下列表达式中值不为0.0的表达式是 A) *&d[1][2] B) p[1][2]
C) *(p+1*5+2) D) *(*p+1)+2)
C
34. 设有定义语句\char s[3][20],(*p)[20]=s;\,则下列语句中 错误的是:
A) scanf(\,s[2]); B) gets(*(p+2)); C) scanf(\; D) gets(s[2][0]); D
35. 下列程序执行后输出的结果是
main()
{char *a[6]={\,\,\,\,\,\; int i;
for(i=0;i<4;i++) printf(\,a[i]); printf(\; }
A) ACEG B) ABCDEFGH C) EGIK D) EFGHIJKL B
36. 下面的变量定义中,不正确的是
A) char *p=\; B) int a[ ]={'A','B','C'}; C) float *q=&b,b; D) double a,*r=&a;
C
37. 设有变量定义语句\ k=2,*p=&k,*q=&k;\则下列表达式中 错误的是
A) k=*P+*q B) k=p+q C) p=q D) *P=*P*(*q)
B
38. 设有变量定义语句\ a[2][3];\,能正确表示数组a中元素 地址的表达式是
A) a[1]+3 B) *(a+2) C) *(a[1]+2) D) *(a+1) D
39. 设有变量定义语句\ b[5];\, 表达式是
A) *&b[5] B) b+2 C) *(b+2) D) *(*(b+3))
C
40. 执行下列程序段后,变量w和*p的值是 int b[ ]={2,3,5,9,11,13},*p=b; w=++(*++p);
A) 3和3 B) 4和3 C) 3和4 D) 4和4 D(B)
41. 设有变量定义语句\ b[5],*pb=b;\,能正确表示b数组 中的元素的地址表达式是
A) b B) pb+5 C) &b[5] D) &b A
42. 设有变量定义
char *lang[ ]={\,\,\VA\,\; 表达式 *lang[1]>*lang[3]的值是 A) 0 B) 1
C) 非零 D) 负数
A
43. 已有函数说明\ min(int a,int b);\,为了让函数指针p指 向函数min,正确的赋值方式是
A) p=&min B) p=min C) *P=min D) *P=&min B
44. 一个能指向具有5个整型元素的一维数组指针的正确定义方式是 A) int (*p)[5]; B) int *p[5];
C) int (*p[5]); D) int *(p[5]); A
45. 若有说明语句
\ a[2][4]={2,4,6,8,10,12,14,16},*p=a[0];\, 则表达式*(*(a+1)+2)**(p+1)的值是 A) 140 B) 80 C) 56 D) 48 C
46. 若有说明语句
\ s[ ]={'A','B','C','D'},*p=s,c;\, 则执行语句\;\后,变量c的值 A) 'A' B) 'B'
能正确引用数组b中元素的
C) 'C' D) 'D' D(应为C)
47. 若有说明语句
\ a[5]={2,3,5,7,11},*p=a+4;\, 下列不能正确引用数组a的元素的表达式是 A) *(--p) B) *(p--) C) *(p++) D) *(++p) D
48. 若有变量定义语句
\ a[ ]={1,3,5,7,9,11,13},x,*p=a+2;\, 在以下表达式中,使变量x的值为5的表达式是 A) x=*(p+++1) B) x=*(--p)
C) x=*(++p) D) x=*(p--) D
49. 若有变量定义语句\ a[4][3],*p=a[2];\则表达式指向的数组元素是
A) a[0][1] B) a[1][1] C) a[2][2] D) a[3][0] C
50. 若已定义:
int a[ ]={0,1,2,,3,4,5,6,7,8,9},*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是 A) a[p-a] B) *(&a[i]) C) P[i] D) a[10] D
51. 下列程序执行后的输出结果是 void func(int *a,int b[ ]) {b[0]=*a+6;} main()
{int a,b[5];
a=0;b[0]=3;
func(&a,b);printf(\,b[0]);} A) 6 B) 7 C) 8 D) 9 A
52. 下列程序的输出结果是 int b=2;
int func(int *a) {b+=*a;return(b);} main()
{int a=2,res=2; res+=func(&a);
printf(\,res); }
A) 4 B) 6 C) 8 D) 10 B
53. 请选出正确的程序段
A) int *p; B) int *s,k; scanf(\,p); *s=100; . . . . . .
C) int *s,k; D) int *s,k; char *p,c; char *p,c; s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; *s=1; . .
. . . . C
54. 已知指针P的指向如下图所示,则执行语句*--P;后*P的值是: a[0] a[1] a[2] a[3] a[4]
┌──┬──┬──┬──┬──┐ │10│20│30│40│50│ └──┴──┴──┴──┴──┘ p↑ A) 30 B) 20 C) 19 D) 29 B(应为A)
55. 下列程序的输出结果是: void fun(int *x,int *y)
{printf(\,*x,*y);*x=3;*y=4;} main()
{int x=1,y=2; fun(&y,&x); printf(\,x,y); }
A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 D(应为C)
56. 下列程序的输出结果是
main()
{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf (\,*--p); }
A) 非法 B) a[4]的地址 C) 5 D) 3 C
57. 有如下程序段 int *p,a=10,b=1; p=&a;a=*p+b;
执行该程序段后,a的值为
A) 12 B) 11
C) 10 D) 编译出错
B
59. 以下函数返回a所指数组中最小值所在的下标值 fun(int *a,int n) {int i,j=0,p; p=j;
for(i=j;i if(a[i] } 在下划线处应填入的是: A) i=p B) a[p]=a[i] C) p=j D) p=i D 60. 有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是: A) *p+9 B) *(p+8) C) *p+=9 D) p+8 B 61. 以下程序的运行结果是 #include \ main() {int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a+5,*q=NULL; *q=*(p+5); printf(\ %d\\n\,*p,*q); } A) 运行后报错 B) 6 6 C) 6 11 D) 5 5 C 62. 下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件 表达式应该是 main() {int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i; for(i=0;i<10;i++,p++) 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言指针章节选择题(2)在线全文阅读。
相关推荐: