C语言指针章节选择题

  • 格式:doc
  • 大小:212.00 KB
  • 文档页数:28

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的值是Ba[0] a[1] a[2] a[3] a[4]┌──┬──┬──┬──┬──┐│10 | 20 | 30 │40 | 50 |└──┴──┴──┴──┴──┘p↑A) 30 B) 20C) 19 D) 293. 下面程序运行时,如果从键盘上输入3,5<回车>,程序输出的结果是______C__。

main( ){ int a,b,*pa,*pb;pa=&a; pb=&b;scanf("%d,%d",pa,pb);*pa=a+b;*pb=a+b;printf("a=%d,b=%d\n",a,b);}A) a=13,b=13 B) a=8,b=8C) a=8,b=13 D) 出错4. 下面程序段的输出结果是____B____。

main( ){ char string1[20],string2[20]={"ABCDEF"};strcpy(string1,string2);printf("%s\n",string1+3);}A) EF B) DEFC) CDEF D) ABCDEF5. 下列程序执行后的输出结果是___B_____。

main(){ int a[3][3],i,*pmul;for(i=0;i<9;i++) pmul[i]=i+1;printf("%d\n",a[1][2]);}A) 3 B) 6C) 9 D) 随机数6. 有如下程序段int *p,a=10,b=1;p=&a; a=*p+b;执行该程序段后,a的值为________。

A) 12 B) 11C) 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<n;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+811. 有如下程序main(){ char s[]="ABCD",*p;for(p=s+1;p<s+4;p++) printf("%s\n",p);}A) ABCD B) ABCD BCD CD DC) B D) BCDC CDD D12. 下列程序的输出结果是main(){ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}A) 非法B) a[4]的地址C) 5 D) 313. 下面程序的输出结果是main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%d\n",*p+9);}A) 0 B) 1C) 10 D) 914. 当调用函数时,实参是一个数组名,则向函数传送的是________。

A) 数组的长度B) 数组的首地址C) 数组每一个元素的地址D) 数组每个元素中的值15. 设有定义语句"int a=3,b,*p=&a;",则下列语句中使b不为3的语句是A) b=*&a;B) b=*p;C) b=a;D) b=*a ;16. 设指针x指向的整型变量值为25,则printf("%d\n",++*x);的输出是:A) 23 B) 24C) 25 D) 2617. 若有说明语句"int i,j =7,*p=&i;",则与i=j等价的语句是A) i=*p;B) *p=*&j;C) i=&j;D) i=**p ;18. 若有说明语句"int a[10],*p=a;",对数组元素的正确引用是A) a[p] B) p[a]C) *(p+2) D) p+2A) char s[5]={"ABCDE"};B) char s[5]={'A' ,'B','C','D','E'};C) char *s; s="ABCDE";D) char *s; scanf("%s",&s);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,*++pC) p+=3 , *p++ D) p+=2,++*p22. 执行语句"char a[10]={"abcd"},*p=a;"后,*(p+4)的值是A) "abcd" B) 'd'C) '\0' D) 不能确定23. 设有定义语句"int (*ptr)[10];",其中的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,%d\n",*p,**pp);A) 10,20 B) 10,10C) 20,10 D) 20,2027. 若有以下定义和语句,则对w数组元素的非法引用是int w[2][3],(*pw)[3];pw=w;A) *(w[0]+2) B) *pw[2]28. 若有如下定义和语句,则输出结果是char *a="ABCD";printf("%s",a);A) A B) ABC) ABC D) ABCD29. 设有两条语句"int a,*p=&a;"和"*P=a;",则下列说法中正确的是A) 两条语句中的"*P"含义完全相同B) 两条语句中的"*P=&a"和"*p=a"功能完全相同C) 第1条语句中的"*P=&a"是定义指针变量P并对其初始化D) 第2条语句中的"*P=a"是将a的值赋予变量P30. 设有定义语句"int x,*p=&x;",则下列表达式中错误的是A) *&x B) &*xC) *&P D) &*P31. 设有定义语句"float s[10],*p1=s,*p2=s+5;",下列表达式中错误的是A) p1=0xffff B) p2--C) p1-P2 D) p1<=p232. 设有下列定义语句"char s[ ]={"12345"},*p=s;",下列表达式中错误的是A) *(p+2) B) *(s+2)C) p="ABCD" D) s="ABC"33. 设有定义语句"double 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. 设有定义语句"char s[3][20],(*p)[20]=s;",则下列语句中错误的是:A) scanf("%s",s[2]);B) gets(*(p+2));C) scanf("%s",*(p+2)+0);D) gets(s[2][0]);35. 下列程序执行后输出的结果是main(){char *a[6]={"AB","CD","EF","GH","IJ","KL"};int i;for(i=0;i<4;i++)printf("%s",a[i]);printf("\n");}C) EGIK D) EFGHIJKL36. 下面的变量定义中,不正确的是A) char *p="string";B) int a[ ]={'A','B','C'};C) float *q=&b,b;D) double a,*r=&a;37. 设有变量定义语句"int k=2,*p=&k,*q=&k;"则下列表达式中错误的是A) k=*P+*q B) k=p+qC) p=q D) *P=*P*(*q)38. 设有变量定义语句"int a[2][3];",能正确表示数组a中元素地址的表达式是A) a[1]+3 B) *(a+2)C) *(a[1]+2) D) *(a+1)39. 设有变量定义语句"int b[5];",能正确引用数组b中元素的表达式是A) *&b[5] B) b+2C) *(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和3C) 3和4 D) 4和441. 设有变量定义语句"double b[5],*pb=b;",能正确表示b数组中的元素的地址表达式是A) b B) pb+5C) &b[5] D) &b42. 设有变量定义char *lang[ ]={"FOR","BAS","JA V A","C"};表达式*lang[1]>*lang[3]的值是A) 0 B) 1C) 非零D) 负数43. 已有函数说明"int min(int a,int b);",为了让函数指针p指向函数min,正确的赋值方式是A) p=&min B) p=minC) *P=min D) *P=&min44. 一个能指向具有5个整型元素的一维数组指针的正确定义方式是A) int (*p)[5];B) int *p[5];C) int (*p[5]);D) int *(p[5]);45. 若有说明语句"int a[2][4]={2,4,6,8,10,12,14,16},*p=a[0];",则表达式*(*(a+1)+2)**(p+1)的值是A) 140 B) 80C) 56 D) 4846. 若有说明语句"char s[ ]={'A','B','C','D'},*p=s,c;",则执行语句"c=++*++p;"后,变量c的值A) 'A' B) 'B'C) 'C' D) 'D'47. 若有说明语句"int a[5]={2,3,5,7,11},*p=a+4;",下列不能正确引用数组a的元素的表达式是A) *(--p) B) *(p--)C) *(p++) D) *(++p)48. 若有变量定义语句"int 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. 若有变量定义语句"int 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("%d\n",b[0]);}A) 6 B) 7C) 8 D) 952. 下列程序的输出结果是int func(int *a){b+=*a;return(b);}main(){int a=2,res=2;res+=func(&a);printf("%d\n",res);}A) 4 B) 6C) 8 D) 1053. 请选出正确的程序段A) int *p;B) int *s,k;scanf("%d",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) 20C) 19 D) 2955. 下列程序的输出结果是:void fun(int *x,int *y){printf("%d%d",*x,*y);*x=3;*y=4;}main(){int x=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A) 2 1 4 3 B) 1 2 1 2C) 1 2 3 4 D) 2 1 1 256. 下列程序的输出结果是main(){char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf ("%d",*--p);}A) 非法B) a[4]的地址C) 5 D) 357. 有如下程序段int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为A) 12 B) 11C) 10 D) 编译出错58. 以下函数返回a所指数组中最小值所在的下标值fun(int *a,int n){int i,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]<a[p]) ___________;return(p);}在下划线处应填入的是:A) i=p B) a[p]=a[i]C) p=j D) p=i59. 有如下说明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+8B60. 以下程序的运行结果是#include "stdio .h"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 %d\n",*p,*q);}A) 运行后报错B) 6 6C) 6 11 D) 5 561. 下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是{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("%d",*a);}A) P>a B) *P>a[0]C) *P>*a[0] D) *P[0]>*a[0]62. 以下程序的输出结果是:#include <string.h>main(){char *a="abcdefghi";int k;fun(a);puts(a);}fun(char *s){int x,y;char c;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}A) ihgfedcba B) abcdefghiC) abcdedcba D) ihgfefghi63. 以下程序的输出结果是main(){char ch[3][4]={"123","456","78"},*p[3];int i;for(i=0;i<3;i++) p[i]=ch[i];for(i=0;i<3;i++) printf("%s",p[i]);}A) 123456780 B) 123 456 780C) 12345678 D) 14764. 以下程序的输出结果是#include <stdeib.h>int a[3][3]={1,2,3,4,5,6,7,8,9},*p;main(){ p=(int*)malloc(sizeof(int));f(p,a);printf("%d\n",*p);}f(int *s,int p[ ][3]){*s=p[1][1];}A) 1 B) 4C) 7 D) 565. 以下程序的输出结果是:{char *s="12134211";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("%d ",v[k]);}A) 4 2 1 1 B) 0 0 0 8C) 4 6 7 8 D) 8 8 8 866. 以下程序的输出结果是#include <string.h>main(){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd";p2="efgh";strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf("%s",str);}A) AfghdEFG B) AbfhdC) Afghd D) Afgd67. 若已定义:int a[9],*p=a;并在以后的语句中未改变P的值,不能表示a[1]地址的表达式是:A) p+1 B) a+1C) a++ D) ++P68. 以下程序的输出结果是main(){ char a[10]={'1','2','3','4','5','6','7','8','9',0},*P;int i;i=8;p=a+i;printf("%s\n",p-3);}A) 6 B) 6789C) '6' D) 78969. 下列程序执行后的输出的结果是main(){int a[3][3],*p;p=&a[0][0];for(i=0; i<9;i++) p[i]=i+1;printf("%d\n",a[1][2]);}A) 3 B) 6C) 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("%d\n",b[0]);}A) 6 B) 7C) 8 D) 971. 下列程序运行后的输出结果是void fun(int *x,int *y){printf("%d %d ",*x,*y);*x=3;*y=4;}main(){int x=1,y=2;fun(&x,&y);printf("%d %d",x,y);}A) 2 1 4 3 B) 1 2 1 2C) 1 2 3 4 D) 2 1 1 272. 下列程序的输出结果是main(){int a[ ]={1,2,3,4,5,6,7,8,9,0},*P;p=a;printf( "%d\n",*p+9);}A) 0 B) 1C) 10 D) 973. 以下程序运行后,输出的结果是main(){char *s="abcde";s+=2;printf("%ld\n",s);}A) cde B) 字符C的ASCII码值C) 字符C的地址D) 出错74. 现已定义:char b[5],*p=b;下列正确的赋值语句是A) b="abcd";B) *b="abcd";C) p="abcd";D) *p="abcd";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="computer";B) *s="computer";C) **s="computer";D) *s='A';77. 现有定义语句:char *p,* q;下列正确的赋值语句是A) p*=3;B) p/=q;C) p+=3;D) p+=q;78. 说明语句"int (*p)();"的含义是A) P是一个指向一维数组的指针变量B) P是指针变量,它指向一个整型数据的指针C) P是一个指向函数的指针,该函数的返回值为整型D) 以上答案都不对79. 下列程序段执行后,变量i的正确结果是int i;char *s="a\045+045\'b";for(i=0;*s++;i++);A) 7 B) 8C) 9 D) 1080. 已知定义"int a[ ]={1,2,3,4},y,*p=&a[1];"执行y=(*- -p)++后,y的值是A) 0 B) 1C) 2 D) 381. 已知定义"int b[ ]={1,2,3,4},y,*p=b;"执行y=*p++后,y的值是A) 1 B) 2C) 3 D) 482. 已知定义"char *a,b[5];",并执行了a=malloc(80);之后,以下语句中正确的是A) scanf("%s",*a);B) b=a;C) b="good";D) a="good";83. C语言的说明语句"char *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<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])C86. 在以下说明中,标识符prt是int (*prt)[3];A) 说明不合法B) 是一指针数组名,每个元素是一个指向整型变量的指针C) 是一个指针,它指向一个具有三个整型元素的一维数组D) 是一个指向整型变量的指针87. 下列程序的输出结果是#include <stdio.h>main( ){int a[ ]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A) 0,5 B) 1,5C) 0,6 D) 1,688. 与以下说明语句等价的说明语句是int *p[4];A) int p[4];B) int *p;C) int *(p[4]); D) int(*p)[4];C89. 若有说明语句"int 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. 若有说明语句"int 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 <stdio.h>main ( ){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 ("%d\n",p[3][2]);}A) 输出项不合法,输出结果确定B) 6C) 8 D) 1292. 若在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 <stdio.h >main(){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("%d\n",k);}A) 10 B) 26C) 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)+jC) &a[j], &p[i], *(*(pa+i)+j)D) **pa, a, p96. 下列程序的输出结果是char s[ ]="ABCD";main(){char *p;for(p=s;p<s+4; p++)printf("%s\n",p);}A) ABCD B) AABC BAB CA DC) D D) ABCDC BCDB CDA D97. 若有以下说明和语句,其输出结果是char *s="\t\v\\\owill\n";printf("%d",strlen(s));A) 14 B) 3C) 9 D) 1098. 若有以下说明和语句,其输出结果是char *sp="\"D:\\ANI.WPS\"" ;printf("%s",sp);A) 字符串中有非法字符,输出值不定B) \"D:\\ANI.WPS\"C) "D:\ANI.WPS"D) "D:\\ANI.WPS"99. 若有以下说明和语句,其输出结果是char *sp="\x69\082\n";printf("%d",strlen(sp));A) 3 B) 5C) 1 D) 字符串中有非法字符,输出值不定100. 下面程序的输出结果是char *a[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char **p;main (){ int i;p=a;for(i=0;i<4; i++)printf("%c", *(p[i]));printf("\n");}A) AEIM B) BFJNC) ABCD D) DHLP101. 若有说明语句"char *strp="string";",则对字符串字符的错误引用是A) *strp B) *(strp+i)C) strp[i] D) strp102. 下面程序的输出结果是main (){int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}A) 3 B) 4C) 1 D) 2103. 下面程序的输出结果是#include <stdio.h >void prt(int *x., int *y., int *z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}int a=10,c=20,b=40;main(){prt(&a,&b,&c);prt(&a,&b,&c);}A) 11,42,31 B) 11,41,2012,22,41 12,42,20C) 11,21,40 D) 11,41,2111,21,41, 12,42,22104. 下面程序输出的结果是#include <stdio.h>#include <string.h>main( ){char *p="abc", *p="ABC", str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC 105. 下面程序的输出结果是void prtv(int *x){printf("%d\n",++*x);}main(){int a=25;prtv(&a);}A) 23 B) 24C) 25 D) 26106. 下面程序的输出结果是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("%d\n",k);}A) 60 B) 68C) 99 D) 108107. 执行下列程序后的输出结果是char s1[4]="12";char *ptr;ptr=s1;printf ("%c\n",*(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) 15C) 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)<m)?*(ptr+k):m;A) 10 B) 7C) 4 D) 6110. 执行以下程序段后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) 27C) 13 D) 无定值111. 以下程序段的输出结果是static char a[ ]="program";char *ptr;ptr =a;for(;ptr<a+7;ptr+=2)putchar(*ptr);A) program B) pormC) por D) 有语法错误112. 以下程序段的输出结果是staric char a[]="language",b[]="programe";char *ptrl,*ptr2;int k;ptrl=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));A) gae B) gaC) 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) 48C) 24 D) 12 114.执行以下程序段后的输出结果是static char a[]="language";char *ptr;ptr=a;while(*ptr){printf("%c",*ptr-32);ptr++;}A) LANGUAGE B) 陷入死循环C) language D) 有语法错误115. 下列程序的运行结果是main (){char *letter[5]={"ab","efgh","ijk","mnop","st"};char **ptr;int i;ptr=letter;for(i=0; i<4; i++)printf("%s",ptr[i]);printf("\n");}A) abef B) abefgC) abefghijkmnop D) abefghijkmnopst116. 下列程序的运行结果是#include <stdio.h >main( ){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("%d\n",*(*(p+2));printf("%d\n",*(*(++p));}A) 15 B) 39 27C) 21 D) 915 21117. 下列程序中有两个printf语句,如果第一个printf语句输出的是194,则第二个printf 语句的输出结果是#include <stdio.h>main( ){int a[10]={1,2,3,4,5,6,7,8,9,0},*p;p=a;printf("%x\n",p);printf("%x\n",p+9);}C) 1a4 D) 1a6118. 若有定义语句"char *aa[2]={"abcd","ABCD"};",则以下说法中正确的是A) aa数组元素的值分别是"abcd"和"ABCD"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("%d ",*(p++));printf("%d\n",**k);}A) 4 4 B) 4 2C) 2 4 D) 4 6120. 下列程序执行后输出的结果是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("%d\n",y);}A) 17 B) 18C) 19 D) 20121. void fun( );fun(pa,&c);printf("%.2f\n",c);}void fun (float b[M][N], float *p){int i,j;*p=b[0][0];for(i=0;i<M;i++)for(j=0;j<N;j++)if(*p<b[i][j])*p=b[i][j];return;}122. 假设已有如下定义语句char c[8]="Tianjin",*s=c;int i;则下面输出语句中,错误的是A) printf("%s\n",s);B) printf("%s\n",*s);C) for(i=0;i<8;i++) D) for(i=0;i<8;i++)printf("%c",c[i]); printf("%c",s[i]);123. 假设已有定义语句"char a[10],*p=a;",则下面的赋值语句中,正确的是A) a[10]="Turbo c";B) a="Turbo c";C) *p="Turbo c";D) p="Turbo c";124. 下列程序的输出结果是#include <stdio.h >#iinclude <string.h>main( ){char *s1="Abcdef",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}A) 正整数B) 负数C) 零D) 不确定的值125. 下列程序的输出结果是#include <stdio.h>main( ){int a[]={2,4,6,8},*p=a, i;for(i=0;i<4;i++)a[i]=*p++;printf("%d\n",a[2]);}A) 6 B) 8C) 4 D) 2126. 下列程序的输出结果是main(){int a[]={2,4,6},*p=&a[0], x=8, y, z;for(y=0;y<3;y++)z=(*(p+y)<x) ? *(p+y) : x;printf("%d\n",z);}A) 2 B) 4C) 6 D) 8main(){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("%d ",*p++); break;case 3: printf("%d ",*(--p));}}}A) 9 9 11 B) 9 11 11C) 7 7 9 D) 7 9 9128. 下面程序的输出结果是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("%d\n",k);}A) 25 B) 60C) 72 D) 86129. 下列程序的输出结果是main(){char *p[4]={"abcd","efgh","ijkl","mnop"};int i;for(i=0; i<2; i++)printf("%s",p[i]);printf("\n");}A) ab B) aeC) abef D) abcdefgh130. 下列程序的输出结果是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("%d\n",*p);}A) 1 B) 7131. 下列程序的输出结果是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("%d",*p);}}A) 23 B) 26C) 33 D) 36132. 下面的程序,调用findmax函数求出数组中最大元素在数组中的下标。