您好,欢迎访问三七文档
第二讲指针一、选择题1.变量的指针,其含义是指该变量的。A)值B)地址C)名D)一个标志2.设有说明int(﹡ptr)[M];其中ptr是。A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量3.选择出i的正确结果。*inti;char﹡s=〞a\045+045\ˊb〞;for(i=0;s++;i++);A)5B)8C)11D)124.如下程序的执行结果是。*#includestdio.hmain(){inti;char﹡s=〞a\\\\\n〞;for(i=0;s[i]!=’\0’;i++)printf(〞%c〞,﹡(s+i));}A)aB)a\C)a\\D)a\\\\5.如下程序的执行结果是。**#includestdio.hmain(){staticinta[]={1,2,3,4,5,6};int﹡p;p=a;﹡(p+3)+=2;printf(〞%d,%d\n〞,﹡p,﹡(p+3));}A)1,3B)1,6C)3,6D)1,46.如下程序的执行结果是。**#includestdio.hmain(){staticinta[][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(﹡p)[4],i=1,j=2;p=a;printf(〞%d\n〞,﹡(﹡(p+i)+j));}A)9B)11C)13D)177.若有以下定义,则对a数组元素的正确引用是。*inta[5],﹡p=a;A)﹡&a[5]B)a+2C)﹡(p+5)D)﹡(a+2)8.若有以下定义,则对a数组元素地址的正确引用是。*inta[5],﹡p=a;A)p+5B)﹡a+1C)&a+1D)&a[0]9.若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为。*A)﹡(﹡(a+i)+j)B)(a+i)[j]C)﹡(a+i+j)D)﹡(a+i)+j10.若有定义:inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为。*A)﹡(a[i]+j)B)(a+i)C)﹡(a+j)D)a[i]+j11.设有下面的程序段:chars[]=〞china〞;char﹡p;p=s;则下列叙述正确的是。A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)﹡p与s[0]相等12.若有语句:chars1[]=〞string〞,s2[8],﹡s3,﹡s4=〞string2〞;则对库函数strcpy的错误调用是。*A)strcpy(s1,〞string2〞);B)strcpy(s4,〞string1〞);C)strcpy(s3,〞string1〞);D)strcpy(s1,s2);13.若有定义:inta[5];则a数组中首元素的地址可以表示为。*A)&aB)a+1C)aD)&a[1]14.以下与int﹡q[5];等价的定义语句是。*A)intq[5]B)int﹡qC)int﹡(q[5]);D)int(﹡q)[5];15.若有以下定义,则﹡(p+5)表示。*A)元素a[5]的地址B)元素a[5]的值C)元素a[6]的地址D)元素a[6]的值16.若有定义:int﹡p[4];则标识符p。A)是一个指向整型变量的指针B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数组D)说明不合法17.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是。*A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point18.若有说明:int*p,m=5,n;以下正确的程序段是。*A)p=&n;scanf(“%d”,&p);B)p=&n;scanf(“%d”,*p);C)scanf(“%d”,&n);*p=n;D)p=&n;*p=m;19.下面程序段的运行结果是。*charstr[]=“ABC”,*p=str;printf(“%s\n”,*(p+1));A)66B)BCC)字符‘B’的地址D)字符‘B’20.已有定义intk=2,*ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是:。*A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);21.有以下程序main(){chara,b,c,*d;a='\';b='\xbc';c='\0xab';d=\0127;printf(%c%c%c%c\n,a,b,c,*d);}编译时出现错误,以下叙述中正确的是。*A)程序中只有a='\';语句不正确。B)b='\xbc';语句不正确。C)d=\0127;语句不正确。D)a='\';和c='\0xab';语句都不正确。22.若有一些定义和语句#includestdio.hinta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是。*A)*q=0;B)w=p;C)*p=&a;D)*p=*w;23.有以下程序int*f(int*x,int*y){if(*x*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf(%d,%d,%d\n,*p,*q,*r);}执行后输出结果是。**A)7,8,8B)7,8,7C)8,7,7D)8,7,824.有以下程序main(){char*s[]={one,two,three},*p;p=s[1];printf(%c,%s\n,*(p+1),s[0]);}执行后输出结果是。*A)n,twoB)t,oneC)w,oneD)o,two25.有以下程序main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;printf(%d\n,s[2]);}执行后输出结果是。*A)随机值B)0C)5D)626.有以下程序main(){charstr[]=xyz,*ps=str;while(*ps)ps++;for(ps--;ps-str=0;ps--)puts(ps);}执行后输出结果是。*A)yz回车xyzB)z回车yzC)z回车yz回车xyzD)x回车xy回车xyz27.有以下程序main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i3;i++)if(i2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf(%d\n,a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是。**A)7B)6C)8D)无确定值28.有以下程序voidfun(int*a,inti,intj){intt;if(ij){t=a[i];a[i]=a[j];a[j]=t;fun(a,++i,--j);}}main(){inta[]={1,2,3,4,5,6},i;fun(a,0,5);for(i=0;i6;i++)printf(%d,a[i]);}执行后输出结果是。**A)654321B)432156C)456123D)12345629.有以下程序main(intargc,char*argv[]){intn,i=0;while(argv[1][i]!='\0'){n=fun();i++;}printf(%d\n,n*argc);}intfun(){staticints=0;s+=1;returns;}假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令exam123〈回车〉则运行结果为。**A)6B)8C)3D)430.有如下程序段int*p,a=10,b=1p=&a;a=*p+b;执行该程序段后,a的值为。*A)12B)11C)10D)编译出错31.对于基类型相同的两个指针变量之间,不能进行的运算是。A)B)=C)+D)–32.以下函数返回a所指数组中最小的值所在的下标值。fun(int*a,intn){inti,j=0,p;p=j;for(i=j;in-1;i++){if(a[i]a[p]);}return(p);}在下划线处应填入的是。A)i=pB)a[p]=a[i]C)p=jD)p=i33.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是。*A)*p+9B)*(p+8)C)*p+=9D)p+834.有如下程序main(){chars[]=”ABCD”,*P;for(p=s+l;p;p++)printf(“%s\n”,*p);}该程序的输出结果是。**A)ABCDB)AC)BD)BCDBCDBCCDCDCDDDD35.有如下程序main(){charch[2][5]={“6937”,”8254”},*p[2];inti,j,s=0;for(i=0;i2;i++)p[i]=ch[i];for(i=0;i2;i++)for(j=0;p[i][j]’\0’;j+=2)s=10*s+p[i][j]-‘0’;printf(“%d\n”,s);}该程序的输出结果是。**A)69825B)63825C)6385D)69382536.执行以下程序后,a的值为。*int*p,a=10,b=1;p=&a;a=*p*b;A)12B)编译出错C)10D)137.以下各语句或语句组中,正确的操作是。*A)chars[5]=abcdeB)char*s;gets(s);C)char*s;s=abcde;D)chars[5];scanf(%s,&s);38.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是。*A)p+1B)a+1C)a++D)++p39.下列语句行中,哪些语句能正确进行字符串赋值操作。*A)charst[4][5]B)chars[5]={‘A’,‘B’,‘C’,‘D’,’E’}C)char*s;s=“ABCDE”;D)char*s;scanf(“%s”,s);40.以下程序的输出结果是。*#includestdio.hvoidmain(void){chara[]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf(“%d”,*--p);}A)非法B)a[4]的地址C)3D)541.以下程序的运行结果是。**#includestdio.hvoidmain(void){inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int*p[4],j;for(j=0;j4;j++)p[j]=a[j];printf(%2d,%2d,%2d,%2d\n,*p[1],(*p)[1],p[3][2],*(p[3]+1));}A)4,4,9,8B)程序出错C)4,2,12,11D)1,1,7,542.若有下列说明和语句:inta[4][5],(*p)[5];p=a;则对a数组元素的正确引用是。*A)p+1B)*(p+3)C)*(p+1)+3D)*(*p+2)43.若有以下定义和语句,则输出结果是。**int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(%d,%d\n,*p,**pp);A)10,20B)10,10C)20,10D)20,2044.若有以下定义和语句,则输出结果为。*char*sp=”\t\b\\\0English\n”;printf(“%d”,strlen(sp));A)12B)3C)17D)1345.以下程序输出的结果是。**voidmain(){inta=5,*p1,**p2;p1=&a,p2=&p1;(*p1)++;pr
本文标题:第二讲--指针习题
链接地址:https://www.777doc.com/doc-1751275 .html