资源描述:
《教材课后题答案-第6章_指针习题答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、习题解答一、单项选择题1.若定义了intn=2,*p=&n,*q=p;则下面【】的赋值是非法的。A.p=qB.*p=*qC.n=*qD.p=n【答案】D2.若定义了double*p,a;则能通过scanf函数给输入项读入数据的程序段是【】。A.p=&a;scanf(“%1e”,p);B.*p=&a;scanf(“%1f”,p);C.p=&a;scanf(“%f”,p);D.p=&a;scanf(“%1f”,a);【答案】C3.若定义了inta[10],i=3,*p;p=&a[5];下面不能表示为a数组元素的是【 】。A.p[-5]B.a[i+5]C.*p++D.a[i-
2、5]【答案】D4.若有如下定义:intn[5]={1,2,3,4,5},*p=n;则值为5的表达式是【 】。A.*+5B.*(p+5)C.*p+=4D.p+4【答案】C5.设变量b的地址已赋给指针变量ps,下面为“真”的表达式是【 】。A.b==&psB.b==psC.b==*psD.&b==&ps【答案】C6.设有以下定义和语句:inta[3][2]={1,2,3,4,5,6},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是【 】。A.a[0][1]B.a[1][0]C.a[1][1]D.a[1][2]【答案】C7.若定义了char*str=”
3、Hello!”;下面程序段中正确的是【 】。A.charc[],*p=c;strcpy(p,str);B.charc[5],*p;strcpy(p=&c[1],&str[3]);C.charc[5];strcpy(c,str);D.charc[5];strcpy(p=c+2,str+3);【答案】B8.若有下面的程序段,则不正确的fxy函数的首部是【 】。main(){inta[20],n;…fxy(n,&a[10]);…}A.voidfxy(inti,intj)B.voidfxy(intx,int*y)C.voidfxy(intm,intn[])D.voidfxy(i
4、ntp,intq[10])【答案】A9.不合法的带参数main函数的首部形式是【 】。A.main(intargc,char*argv)B.main(inti,char**j)C.main(inta,char*b[])D.main(intargc,char*argv[10])【答案】A1.设有如下定义int(*pt)();则以下叙述中正确的是【 】。A.pt是指向一维数组的指针变量B.pt是指向整型数据的指针变量C.pt是一个函数名,该函数的返回值是指向整型数据的指针D.pt是指向函数的指针变量,该函数的返回值是整型数据【答案】D二、填空题1.请指出在int*p[3];
5、定义中p是 【1】 。在int(*q)();定义中q是 【2】 。【答案】【1】整型指针数组;【2】指向返回值是整型的函数指针2.若有如下定义,则使指针p指向值为20的数组元素的表达式是p+= 。inta[6]={1,5,10,15,20,25},*p=a;【答案】43.执行以下程序段后,x的值为 。inta[3][2]={{1,2},{10,20},{15,30}};intx,*p;p=&a[0][0];x=(*p)*(*(p+3))*(*(p+5));【答案】6004.请填空将函数补充完整,使得add函数具有求两个数之和的功能。voidadd(i
6、nta,intb, 【1】 c){ 【2】 =a+b;}【答案】【1】int*;【2】*c5.下面程序的功能是输出数组中的最大值,由s指针指向该元素,请将该程序补充完整。main(){inta[8]={6,7,2,9,1,10,5,8},*p,*s;for(p=a,s=a;p-a<8;p++)if( )s=p;printf(“max:%d”,*s);}【答案】*p>*s6.下面程序的功能是通过调用aver函数,计算数组中各元素的平均值。请将该程序补充完整。floataver(int*a,intn){inti;floatx=0.0;for(i=0;i7、++)x+= 【1】 ;x= 【2】 ;returnx;}main(){intm[]={2,1,7,4,5,9,6};floatavg;avg=aver(m,7);printf(“average=%f”,avg);}【答案】【1】a[i]或*(a+i);【2】x/n1.下面函数的功能是计算指针p所指向的字符串中的字符个数。请将该程序补充完整。unsignedintMStrlen(char*p){unsignedintlen;len=0;for(;*p!= 【1】 ;p++){len 【2】 ;}return 【3】