C语言指针章节选择题
更新时间:2024-01-16 07:57:01 阅读量: 教育文库 文档下载
- c语言指针选择题及答案推荐度:
- 相关推荐
C语言指针章节选择题(答案在最后)
1. 若已定义: 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]
2. 已知指针p的指向如下图所示,则执行语句*--p;后*p的值是B
a[0] a[1] a[2] a[3] a[4]
┌──┬──┬──┬──┬──┐ │ 10 | 20 | 30 │ 40 | 50 |
└──┴──┴──┴──┴──┘ p↑
A) 30 B) 20 C) 19 D) 29
3. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的 结果是______C__。 main( )
{ int a,b,*pa,*pb; pa=&a; pb=&b;
scanf(\ *pa=a+b; *pb=a+b;
printf(\ }
A) a=13,b=13 B) a=8,b=8 C) a=8,b=13 D) 出错
4. 下面程序段的输出结果是____B____。 main( )
{ char string1[20],string2[20]={\ strcpy(string1,string2); printf(\ }
A) EF B) DEF
C) CDEF D) ABCDEF
5. 下列程序执行后的输出结果是___B_____。 main()
{ int a[3][3],i,*pmul;
pmul=&a[0][0];
for(i=0;i<9;i++) pmul[i]=i+1; printf(\ }
A) 3 B) 6
C) 9 D) 随机数
6. 有如下程序段 int *p,a=10,b=1; p=&a; a=*p+b;
执行该程序段后,a的值为________。 A) 12 B) 11
C) 10 D) 编译出错
7. 对于基类型相同的两个指针变量之间,不能进行的运算是 A) < B) = C) + D) –
8. 以下函数返回a所指数组中最小值所在的下标值 fun( int *a,int n) { int i,j=0,p; p=j;
for(i=j;i if( *(a+i)<*(a+p) )_______________; return (p); } 在下划线处应填入的是________。 A) i=p; B) a[p]=a[i]; C) p=j; D) p=i; 9. 有以下函数 char *fun(char *p) { return p; } 该函数的返回值是________。 A) 无确切的值 B) 形参p中存放的地址值 C) 一个临时存储单元的值 D) 形参p自身的地址值 10. 有如下说明 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 11. 有如下程序 main() { char s[]=\ for(p=s+1;p } 该程序的输出结果是________。 A) ABCD B) A BCD B CD C D D C) B D) BCD C CD D D 12. 下列程序的输出结果是 main() { char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf(\ } A) 非法 B) a[4]的地址 C) 5 D) 3 13. 下面程序的输出结果是 main() { int a[]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(\ } A) 0 B) 1 C) 10 D) 9 14. 当调用函数时,实参是一个数组名,则向函数传送的是________。 A) 数组的长度 B) 数组的首地址 C) 数组每一个元素的地址 D) 数组每个元素中的值 15. 设有定义语句\ a=3,b,*p=&a;\,则下列语句中使b不为3的语句是 A) b=*&a; B) b=*p; C) b=a; D) b=*a ; 16. 设指针x指向的整型变量值为25,则printf(\,++*x);的输出是: A) 23 B) 24 C) 25 D) 26 17. 若有说明语句\ i,j =7,*p=&i;\,则与i=j等价的语句是 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p ; 18. 若有说明语句\ a[10],*p=a;\,对数组元素的正确引用是 A) a[p] B) p[a] C) *(p+2) D) p+2 19. 下列各语句行中,能正确进行赋字符串操作的语句是 A) char s[5]={\; B) char s[5]={'A' ,'B','C','D','E'}; C) char *s; s=\; D) char *s; scanf(\; 20. 若有以下定义语句,则不能表示a数组元素的表达式是 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; A) *p B) a[10] C) *a D) a[p-a] 21. 若有以下定义语句,则值为3的表达式是 int a[ ]={1,2,3,4,5,6,7,8,9,10},*p=a; A) p+=2 ,*(p++) B) p+=2,*++p C) p+=3 , *p++ D) p+=2,++*p 22. 执行语句\ a[10]={\,*p=a;\后,*(p+4)的值是 A) \ B) 'd' C) '\\0' D) 不能确定 23. 设有定义语句\;\,其中的ptr是 A) 10个指向整型变量的指针 B) 指向10个整型变量的函数指针 C) 一个指向具有10个元素的一维数组的指针 D) 具有10个指针元素的一维数组 24. 若有以下定义,则数组为4的表达式是 int a[3][4]={{0,1},{2,4},{5,8}},(*p)[4]=a; A) *a[1]+1 B) p++,*(p+1) C) a[2][2] D) p[1][1] 25. 若有下面的程序片段,则对数组元素的错误引用是 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p; A) pp[0][1] B) a[10] C) p[3][1] D) *(*(P+2)+2) 26. 若有如下定义和语句,则输出结果是 int **pp,*p,a=10,b=20; pp=&p;p=&a;p=&b;printf(\,%d\\n\,*p,**pp); A) 10,20 B) 10,10 C) 20,10 D) 20,20 27. 若有以下定义和语句,则对w数组元素的非法引用是 int w[2][3],(*pw)[3];pw=w; A) *(w[0]+2) B) *pw[2] C) pw[0][0] D) *(pw[1]+2) 28. 若有如下定义和语句,则输出结果是 char *a=\;printf(\,a); A) A B) AB C) ABC D) ABCD 29. 设有两条语句\ a,*p=&a;\和\;\,则下列说法中 正确的是 A) 两条语句中的\含义完全相同 B) 两条语句中的\和\功能完全相同 C) 第1条语句中的\是定义指针变量P并对其初始化 D) 第2条语句中的\是将a的值赋予变量P 30. 设有定义语句\ x,*p=&x;\,则下列表达式中错误的是 A) *&x B) &*x C) *&P D) &*P 31. 设有定义语句\ s[10],*p1=s,*p2=s+5;\,下列表达 式中错误的是 A) p1=0xffff B) p2-- C) p1-P2 D) p1<=p2 32. 设有下列定义语句\ s[ ]={\,*p=s;\,下列表达 式中错误的是 A) *(p+2) B) *(s+2) C) p=\ D) s=\ 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) 34. 设有定义语句\ s[3][20],(*p)[20]=s;\,则下列语句中 错误的是: A) scanf(\,s[2]); B) gets(*(p+2)); C) scanf(\; D) gets(s[2][0]); 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 36. 下面的变量定义中,不正确的是 A) char *p=\; B) int a[ ]={'A','B','C'}; C) float *q=&b,b; D) double a,*r=&a; 37. 设有变量定义语句\ k=2,*p=&k,*q=&k;\则下列表达式中 错误的是 A) k=*P+*q B) k=p+q C) p=q D) *P=*P*(*q) 38. 设有变量定义语句\ a[2][3];\,能正确表示数组a中元素 地址的表达式是 A) a[1]+3 B) *(a+2) C) *(a[1]+2) D) *(a+1) 39. 设有变量定义语句\ b[5];\, 能正确引用数组b中元素的 表达式是 A) *&b[5] B) b+2 C) *(b+2) D) *(*(b+3)) 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 41. 设有变量定义语句\ b[5],*pb=b;\,能正确表示b数组 中的元素的地址表达式是 A) b B) pb+5 C) &b[5] D) &b 42. 设有变量定义 char *lang[ ]={\,\,\VA\,\; 表达式 *lang[1]>*lang[3]的值是 A) 0 B) 1 C) 非零 D) 负数 43. 已有函数说明\ min(int a,int b);\,为了让函数指针p指 向函数min,正确的赋值方式是 A) p=&min B) p=min C) *P=min D) *P=&min 44. 一个能指向具有5个整型元素的一维数组指针的正确定义方式是 A) int (*p)[5]; B) int *p[5]; C) int (*p[5]); D) int *(p[5]); 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 46. 若有说明语句 \ s[ ]={'A','B','C','D'},*p=s,c;\, 则执行语句\;\后,变量c的值 A) 'A' B) 'B' C) 'C' D) 'D' 47. 若有说明语句 \ a[5]={2,3,5,7,11},*p=a+4;\, 下列不能正确引用数组a的元素的表达式是 A) *(--p) B) *(p--) C) *(p++) D) *(++p) 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--) 49. 若有变量定义语句\ a[4][3],*p=a[2];\则表达式指向的数组元素是 A) a[0][1] B) a[1][1] C) a[2][2] D) a[3][0] 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] 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 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 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; . . . . . . 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 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 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 57. 有如下程序段 int *p,a=10,b=1; p=&a;a=*p+b; 执行该程序段后,a的值为 A) 12 B) 11 C) 10 D) 编译出错 58. 以下函数返回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 59. 有如下说明 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 60. 以下程序的运行结果是 #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 61. 下面程序把数组元素中的最大值放入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++) if( )*a=*p; printf(\,*a); } A) P>a B) *P>a[0] C) *P>*a[0] D) *P[0]>*a[0] 62. 以下程序的输出结果是: #include {char *a=\;int k; fun(a);puts(a); } fun(char *s) {int x,y;char c; for(x=0,y=strlen(s)-1;x A) ihgfedcba B) abcdefghi C) abcdedcba D) ihgfefghi 63. 以下程序的输出结果是 main() {char ch[3][4]={\,\,\,*p[3]; int i; for(i=0;i<3;i++) p[i]=ch[i]; for(i=0;i<3;i++) printf(\,p[i]); } A) 123456780 B) 123 456 780 C) 12345678 D) 147 64. 以下程序的输出结果是 #include int a[3][3]={1,2,3,4,5,6,7,8,9},*p; main() { p=(int*)malloc(sizeof(int)); f(p,a); printf(\,*p); } f(int *s,int p[ ][3]) {*s=p[1][1];} A) 1 B) 4 C) 7 D) 5 65. 以下程序的输出结果是: main() {char *s=\; int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0;k<4;k++) printf(\ \,v[k]); } A) 4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8 66. 以下程序的输出结果是 #include { char *p1,*p2,str[50]=\; p1=\;p2=\; strcpy(str+1,p2+1);strcpy(str+3,p1+3); printf(\,str); } A) AfghdEFG B) Abfhd C) Afghd D) Afgd 67. 若已定义:int a[9],*p=a;并在以后的语句中未改变P的值,不能表示a[1]地址的表达式是: A) p+1 B) a+1 C) a++ D) ++P 68. 以下程序的输出结果是 main() { char a[10]={'1','2','3','4','5','6','7','8','9',0},*P; int i;i=8;p=a+i; printf(\,p-3); } A) 6 B) 6789 C) '6' D) 789 69. 下列程序执行后的输出的结果是 main() {int a[3][3],*p;p=&a[0][0]; for(i=0; i<9;i++) p[i]=i+1; printf(\} A) 3 B) 6 C) 9 D) 随机数 70. 下列程序执行后的输出的结果是 void func(int *a,int b[ ]){b[0]=*a+6;} main() {int a,b[5];a=0;b[0]=3; func(&a,b); printf(\} A) 6 B) 7 C) 8 D) 9 71. 下列程序运行后的输出结果是 void fun(int *x,int *y) {printf(\,*x,*y);*x=3;*y=4;} main() {int x=1,y=2; fun(&x,&y); printf(\} A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 72. 下列程序的输出结果是 main() {int a[ ]={1,2,3,4,5,6,7,8,9,0},*P; p=a;printf( \,*p+9); } A) 0 B) 1 C) 10 D) 9 73. 以下程序运行后,输出的结果是 main() {char *s=\;s+=2;printf(\,s);} A) cde B) 字符C的ASCII码值 C) 字符C的地址 D) 出错 74. 现已定义:char b[5],*p=b;下列正确的赋值语句是 A) b=\; B) *b=\; C) p=\; D) *p=\; 75. 现已定义:char s[10],*p=s;下列不正确的赋值语句是 A) p=s+5; B) s=[p+5]; C) s[2]=p[4]; D) *p=s[0]; 76. 现有定义语句:char **s;下列正确的赋值语句是 A) s=\; B) *s=\; C) **s=\; D) *s='A'; 77. 现有定义语句:char *p,* q;下列正确的赋值语句是 A) p*=3; B) p/=q; C) p+=3; D) p+=q; 78. 说明语句\ (*p)();\的含义是 A) P是一个指向一维数组的指针变量 B) P是指针变量,它指向一个整型数据的指针 C) P是一个指向函数的指针,该函数的返回值为整型 D) 以上答案都不对 79. 下列程序段执行后,变量i的正确结果是 int i; char *s=\; for(i=0;*s++;i++); A) 7 B) 8 C) 9 D) 10 80. 已知定义\ a[ ]={1,2,3,4},y,*p=&a[1];\执行y=(*- -p)++后,y的值是 A) 0 B) 1 C) 2 D) 3 81. 已知定义\ b[ ]={1,2,3,4},y,*p=b;\执行y=*p++后,y的值是 A) 1 B) 2 C) 3 D) 4 82. 已知定义\ *a,b[5];\,并执行了a=malloc(80);之后, 以下语句中正确的是 A) scanf(\,*a); B) b=a; C) b=\; D) a=\; 83. C语言的说明语句\ *p[5];\的 含义是 A) P是一个指针数组,其数组的每一个元素是指向字符的指针 B) P是一个指针,指向一个数组,数组的元素为字符型 C) A和B均不对,但它是C语言正确的语句 D) C语言不允许这样的说明语句 84. 若有以下说明和语句,且0<=i<10,则对数组元素的错误引用是 int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i; p=a; A) *(a+i) B) a[p-a] C) p+i D) *(&a[i]) 85. 若有以下说明和语句,且0 A) *(a+i) B) a[p-a] C) p+i D) *(&a[i]) C 86. 在以下说明中,标识符prt是 int (*prt)[3]; A) 说明不合法 B) 是一指针数组名,每个元素是一个指向整型变量的指针 C) 是一个指针,它指向一个具有三个整型元素的一维数组 D) 是一个指向整型变量的指针 87. 下列程序的输出结果是 #include {int a[ ]={1,2,3,4,5,6},*p; p=a; *(p+3)+=2; printf(\} A) 0,5 B) 1,5 C) 0,6 D) 1,6 88. 与以下说明语句等价的说明语句是 int *p[4]; A) int p[4]; B) int *p; C) int *(p[4]); D) int(*p)[4]; C 89. 若有说明语句\ a[4][10];\且0<=i<4,0<=j<10, 则对数组元素a[i][j]的错误引用是 A) *(&a[0][0]+10*i+j) B) *(a+i)[j] C) (*(*a+i)+j) D) *(a[i]+j) 90. 若有说明语句\ a[4][3],b[3][4],(*prt) [3];\, 且0<=i<3,则下列正确的赋值语句是 A) prt=a; B) prt=b; C) prt=b[i]; D) prt=a[i]; 91. 下面程序输出的结果是 # include {int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3]; printf (\} A) 输出项不合法,输出结果确定 B) 6 C) 8 D) 12 92. 若在C程序中有以下说明和语句,则下面表示的都是对数组元素 的正确引用的是(其中0<=i<4, 0<=j<3) main( ) {int a[4][3]={0},*ptr[3],i,j; ptr=a; . . . } A) a[i][j], a[i]+j, *(*(a+i)+j) B) *(ptr+i)[j], ptr[i]+j, *(*(ptr+i)+j) C) *(ptr+i)[j], *(a+i)[j], *(ptr+i) D) ptr[i][j], *(ptr[i]+j),*(a[i]+j) 93. 下列程序的输出结果是 #include {int a[20],*p[4],i,j,k=0; for(i=0;i<20;i++) a[i]=i; for(i=0;i<4;i++) p[i]=&a[i*(i+1)]; for(i=0;i<4;i++) k=k+*(p[i]+i); printf(\} A) 10 B) 26 C) 6 D) 数组元素引用不合法,输出结果不定 94. 若有以下说明和语句,则对a数组元素的错误引用是 int a[12]={0},*p[3],**pp,i; for(i=0;i<3;i++) p[i]=&a[i*4]; pp=p; A) a[12] B) p[2][3] C) a[10] D) pp[0][1] 95. 若在C程序中有以下说明和语句,则能都表示a 数组元素的 地址的是(其中0<=i<4, 0<=j<3) main() {int a[4][3]={0},*p[4],**pa,i,j; for (i=0; i<4;i++) p[i]=a[i]; . . . pa=p; . . . } A) &a[i][j], p[i]+j, pa[i][j] B) *(pa+i)+j, p[i], *(p+i)+j C) &a[j], &p[i], *(*(pa+i)+j) D) **pa, a, p 96. 下列程序的输出结果是 char s[ ]=\; main() {char *p; for(p=s;p A) ABCD B) A ABC B AB C A D C) D D) ABCD C BCD B CD A D 97. 若有以下说明和语句,其输出结果是 char *s=\; printf(\,strlen(s)); A) 14 B) 3 C) 9 D) 10 98. 若有以下说明和语句,其输出结果是 char *sp=\:\\\\ANI.WPS\\\; printf(\,sp); A) 字符串中有非法字符,输出值不定 B) \\\:\\\\ANI.WPS\\\C) \:\\ANI.WPS\D) \:\\\\ANI.WPS\ 99. 若有以下说明和语句,其输出结果是 char *sp=\; printf(\,strlen(sp)); A) 3 B) 5 C) 1 D) 字符串中有非法字符,输出值不定 100. 下面程序的输出结果是 char *a[6]={\,\,\,\, \,\; char **p; main () { int i; p=a; for(i=0;i<4; i++) printf(\ *(p[i])); printf(\} A) AEIM B) BFJN C) ABCD D) DHLP 101. 若有说明语句\ *strp=\;\,则对字符串 字符的错误引用是 A) *strp B) *(strp+i) C) strp[i] D) strp 102. 下面程序的输出结果是 main () {int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; printf(\,*(p+2)); } A) 3 B) 4 C) 1 D) 2 103. 下面程序的输出结果是 #include void prt(int *x., int *y., int *z) {printf(\} int a=10,c=20,b=40; main() {prt(&a,&b,&c); prt(&a,&b,&c); } A) 11,42,31 B) 11,41,20 12,22,41 12,42,20 C) 11,21,40 D) 11,41,21 11,21,41, 12,42,22 104. 下面程序输出的结果是 #include {char *p=\ str[50]=\ strcpy(str+2,strcat(p1,p2)); printf(\} A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC 105. 下面程序的输出结果是 void prtv(int *x) {printf(\,++*x);} main() {int a=25; prtv(&a); } A) 23 B) 24 C) 25 D) 26 106. 下面程序的输出结果是 main () {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4]=a,i,j,k=0; for(i=0; i<3; i++) for(j=0; j<2; j++) k=k+*(*(p+i)+j); printf(\} A) 60 B) 68 C) 99 D) 108 107. 执行下列程序后的输出结果是 char s1[4]=\; char *ptr; ptr=s1; printf (\,*(ptr+1)); A) 字符'2' B) 字符'1' C) 字符'2'的地址 D) 不确定 108. 执行下列程序段后y 的值是 static int a[ ]={1,3,4,5,7,9}; int x, y, *ptr; y=1; ptr=&a[1]; for(x=0; x<3; x++) y*=*(ptr+x); A) 105 B) 15 C) 60 D) 无定值 109. 执行下列程序段后m 的值是 static int a[ ]={7,4,6,3,10}; int m,k,*ptr; m=10; ptr=&a[0]; for(k=0; k<5; k++ ) m=(*ptr+k) 110. 执行以下程序段后s的值是 static int a[ ]={5,3,7,2,1,5,4,10}; int s=0,k; for(k=0;k<8;k+=2) s+=*(a+k); A) 17 B) 27 C) 13 D) 无定值 111. 以下程序段的输出结果是 static char a[ ]=\; char *ptr; ptr =a; for(;ptr A) program B) porm C) por D) 有语法错误 112. 以下程序段的输出结果是 staric char a[]=\,b[]=\; char *ptrl,*ptr2; int k; ptrl=a;ptr2=b; for(k=0;k<7;k++) if(*(ptr1+k)==*(ptr2+k)) printf(\ A) gae B) ga C) language D) 有语法错误 113. 以下程序段执行后,m的值是 static int a[2][3]={{1,2,3},{4,5,6,}}; int m,*ptr; ptr=&a[0][0]; m=(*ptr)*(*(ptr+2))*(*(ptr+4)); A) 15 B) 48 C) 24 D) 12 114. 执行以下程序段后的输出结果是 static char a[]=\; char *ptr; ptr=a; while(*ptr) {printf(\,*ptr-32); ptr++; } A) LANGUAGE B) 陷入死循环 C) language D) 有语法错误 115. 下列程序的运行结果是 main () {char *letter[5]={\; char **ptr; int i; ptr=letter; for(i=0; i<4; i++) printf(\ printf(\} A) abef B) abefg C) abefghijkmnop D) abefghijkmnopst 116. 下列程序的运行结果是 #include {static int a[]={2,6,8,10,14,18}; static int *ptr[]={&a[0],&a[1],&a[2],&a[3],&a[4]}; int **p,i; for(i=0;i<5;i++) a[i]=a[i]/2+a[i]; p=ptr; printf(\ printf(\} A) 15 B) 3 9 27 C) 21 D) 9 15 21 117. 下列程序中有两个printf语句,如果第一个printf语句输出的 是194,则第二个printf 语句的输出结果是 #include {int a[10]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf(\printf(\} A) 203 B) 204 C) 1a4 D) 1a6 118. 若有定义语句\ *aa[2]={\,\;\则以下说法中 正确的是 A) aa数组元素的值分别是\和\ B) aa是指针变量,它指向含有两个数组元素的字符型一维数组 C) aa数组的两个元素分别存放的是含有4个字符的一维字符数组的 首地址 D) aa数组的两个元素中各自存放了字符'a'和'A'的地址 119. 下列程序的输出结果是 main() {int a[5]={2,4,6,8,10},*p,**k; p=a;k=&p; printf(\printf(\} A) 4 4 B) 4 2 C) 2 4 D) 4 6 120. 下列程序执行后输出的结果是 main() { int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(\,y); } A) 17 B) 18 C) 19 D) 20 121. void fun( ); fun(pa,&c); printf(\} void fun (float b[M][N], float *p) {int i,j; *p=b[0][0]; for(i=0;i A) -12.50 B) -12.5 C) -18.70 D) -18.7 122. 假设已有如下定义语句 char c[8]=\,*s=c; int i; 则下面输出语句中,错误的是 A) printf(\,s); B) printf(\,*s); C) for(i=0;i<8;i++) D) for(i=0;i<8;i++) printf(\ printf(\ 123. 假设已有定义语句\ a[10],*p=a;\,则下面的赋值 语句中,正确的是 A) a[10]=\ c\; B) a=\ c\; C) *p=\ c\; D) p=\ c\; 124. 下列程序的输出结果是 #include {char *s1=\,*s2=\; s1++; s2++; printf(\,strcmp(s1,s2)); } A) 正整数 B) 负数 C) 零 D) 不确定的值 125. 下列程序的输出结果是 #include {int a[]={2,4,6,8},*p=a, i; for(i=0;i<4;i++) a[i]=*p++; printf(\} A) 6 B) 8 C) 4 D) 2 126. 下列程序的输出结果是 main() {int a[]={2,4,6},*p=&a[0], x=8, y, z; for(y=0;y<3;y++) z=(*(p+y) A) 2 B) 4 C) 6 D) 8 127. 下面程序的输出结果是 main() {int j,a[]={1,3,5,7,9,11,13,15},*p=a+5; for(j=3; j>0; j--) {switch(j) {case 1: case 2: printf(\ break; case 3: printf(\ } } } A) 9 9 11 B) 9 11 11 C) 7 7 9 D) 7 9 9 128. 下面程序的输出结果是 main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int (*p)[4]=a,i,j,k=0; for(i=0; i<3; i++) for(j=0; j<2; j++) k+=*(*p+i)+j); printf(\} A) 25 B) 60 C) 72 D) 86 129. 下列程序的输出结果是 main() {char *p[4]={\,\,\,\; int i; for(i=0; i<2; i++) printf(\ printf(\} A) ab B) ae C) abef D) abcdefgh 130. 下列程序的输出结果是 fun(int **s,int p[2][3]) {**s=p[1][1];} main() {int a[2][3]={1,3,5,7,9,11},*p; p=(int*)malloc(sizeof(int)); fun(&p,a); printf(\} A) 1 B) 7 C) 9 D) 11 131. 下列程序的输出结果是 int a[3][3]={{2},{4},{6}}; main() {int i,*p=&a[0][0]; for(i=0;i<2;i++) {if(i==0) a[i][i+1]=*p+1; else ++p; printf(\ } } A) 23 B) 26 C) 33 D) 36 132. 下面的程序,调用findmax函数求出数组中最大元素在数组中的下 标。请选择正确的内容填入________中。 #include for(p=0, *k=p; p if(s[p]>s[*k])___________; } main( ) {int a[10],i,k; for(i=0;i<10;i++) scanf(\ findmax(a,10,&k); printf(\} A) k=p B) *k=p C) k=p-s D) *k=p-s 133. 下列程序的输出结果是 main() {char ch[2][5]={\,\,*p[2]; int i,j,s=0; for(i=0;i<2;i++) p[i]=ch[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\\0';j+=2) s=10*s+p[i][j]-'0'; printf(\} A) 69825 B) 63825 B) 6385 D) 693825 134. 请选出正确的程序段 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; . . . . . 135. 下列程序的输出结果是 int b=2; int func(*a) {b+=*a;return(b);} main() {int a=2,res=2; res+=func(&a); printf(\} A) 4 B) 6 C) 8 D) 10 B 136. 下列程序执行后的输出结果是 void func(int *a,int b[]) {b[0]=*a+6;} main() {int a,b[5]; a=0;b[0]=3; func(&a,b); printf(\} A) 6 B) 7 C) 8 D) 9 A 137. 若有以下定义和语句\ r=99,*p=&r;*p=r;\则以下正确的叙述是 A) 以上两处的*p含义相同,都说明给指针变量p赋值 B) 在\ r=99,*p=&r;\中,把r 地址赋给了p 所指的存储单元 C) 语句\;\把变量r的值赋给指针变量p D) 语句\;\取变量r的值放回r中 138. 以下程序执行后,a的值是 main() {int a,k=4,m=6,*p1=&k,*p2=&m; a=p1==&m; printf(\} A) 4 B) 1 C) 0 D) 运行时出错,a无定值 139. 以下程序的输出结果是 int fun(int x,int y,int *cp,int *dp) {*cp=x+y;*dp=x-y;} main () {int a,b,c,d; a=30;b=50; fun(a,b,&c,&d); printf(\} A) 50,30 B) 30,50 C) 80,-20 D) 80,20 140. 执行以下程序段后,m的值为 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2)*(*(p+4)); A) 15 B) 14 C) 13 D) 12 141. 设有如下定义: int arr[]={6,7,8,9,10}; int *ptr; 则下列程序的输出结果为 ptr=arr; *(ptr+2)+=2; printf(\,%d\\n\,*ptr,*(ptr+2)); A) 8,10 B) 6,8 C) 7,9 D) 6,10 142. 设p1和p2是指向同一个int型一维数组的指针变量, k为int型变量,则不能正确执行的语句是 A) k=*p1+*p2; B) p2=k; C) p1=p2; D) k=*p1*(*p2); 143. 若有以下定义和语句: char *s1=\,*s2=\; printf(\,strlen(strcpy(s1,s2)); 则输出结果是 A) 4 B) 5 C) 9 D) 10 144. 若有以下定义: char s[20]=\,*ps=s; 则不能代表字符o的表达式是 A) ps+2 B) s[2] C) ps[2] D) ps+=2,*Ps 145. 若有以下说明,则数值为6的表达式是 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; A) *p+6 B) *(p+6) C) *p+=5 D) p-5 146. 若有说明:\ i,j=7,*p=&i;\则与i=j;等价的语句是 A) i=*p; B) *p=*&j; C) i=&j; D) i=**p; 147. 执行以下程序后,y的值是 main() {int a[]={2,4,6,8,10}; int y=1,x,*p; p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf(\} A) 17 B) 18 C) 19 D) 20 148. 下列程序的输出结果是 main() {char ch[2][5]={\,\,*p[2]; int i,j,s=0; for(i=0; i<2; i++) for (j=0;p[i][j]>'\\0'&& p[i][j]<='9';j+=2) s=10*s+p[i][j]-'0'; printf(\} A) 6385 B) 69825 C) 63825 D) 693825 149. 下列程序的输出结果是 main() {char *p1,*p2,str[50]=\; p1=\;p2=\; strcpy(str+2,strcat(p1+2,p2+1)); printf(\,str); } A) xyabcAB B) abcABZ C) Ababxy D) xyabcBCD 答案: 1. D 2. B 3. C 4. B 10. B 11. D 12. C 13. C 19. C 20. B 21. A 22. C 28. D 29. C 30. B 31. A 37. B 38. D 39. C 40.D 5. B 6. B 15. D 23. C 24. D 32. D 33. C 41. A 42. A 7. C 8. D 16. D 17. B 25. C 26. D 34. D 35. B 43. B 44. A 9. B 18. C 27. B 36. C 45.C 14. B
正在阅读:
C语言指针章节选择题01-16
谈如何做好农村商业银行基层支行科技工作04-10
西北大学博士后公寓管理办法(试行)05-03
读《毛主席在花山》有感,500字02-16
最新东财15秋《工程造价管理》期末考试作业100分答案03-11
石家庄小学排名02-14
《孔明智退司马懿》教材解读04-30
泰州市姜堰区2016-2017年第一学期九年级语文期中试题及答案06-15
收费管理中心应急预案03-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 选择题
- 指针
- 语言
- 章节
- 鲁班奖创优计划
- 2014年药学专业知识(二)药物化学部分(模拟试卷六)
- 13级专门水文地质学作业
- 爱国主义教育基地自查报告
- 2018年春中国石油大学北京石油加工工程第三阶段在线作业及满分答案
- 经营十字绣加盟店经验和建议
- 2014计算机一级考试题目(附答案)
- 个人求职简历范文参考精选
- 上海重点初中八(下)电子教案新20.3(1)
- 四学年心育课本
- 辽宁省人教版高中选修2-1数学导学案:3.2.5距离 缺答案
- 数学课前课后快速检测
- 横山镇中心小学开展扣好人生的第一粒扣子的活动方案及图片
- 2016年初三化学精华版复习资料
- 肿瘤内科化疗药配置SOP-C10
- 创优计划(ssd)(1)
- 垂径定理作业设计案例
- 非车险部上半年工作总结
- 国家竞争优势读书笔记
- 护理纠纷的防范措施