第五章指针.docx

上传人:b****6 文档编号:5245962 上传时间:2022-12-14 格式:DOCX 页数:17 大小:32.12KB
下载 相关 举报
第五章指针.docx_第1页
第1页 / 共17页
第五章指针.docx_第2页
第2页 / 共17页
第五章指针.docx_第3页
第3页 / 共17页
第五章指针.docx_第4页
第4页 / 共17页
第五章指针.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

第五章指针.docx

《第五章指针.docx》由会员分享,可在线阅读,更多相关《第五章指针.docx(17页珍藏版)》请在冰豆网上搜索。

第五章指针.docx

第五章指针

第五章指针、结构体与共用体

5.1选择题1.C2.D3.A4.A5.C6.D7.C8.A9.C10.D11.C12.B13.B14.C15.B16.D17.C18.A19.B20.C21.D22.D23.D24.C25.D26.C27.A28.C29.A30.B31.

(1)C

(2)A(3)A(4)C(5)C32.D33.

(1)D

(2)B(3)A34.C35.C36.A37.B38.A39.

(1)A

(2)C(3)D(4)B40.D41.B42.D43.A44.B45.C46.A47.A48.D49.A50.D51.C52.B53.A54.B

1.下列定义中不正确的是_____。

A.int*p,**q;B.intp[n];C.int*p(n);D.int(*p)();2.已知p、p1为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是_____。

A.p=&i,p=p1;B.p=a;C.p=&a[i];D.p=10;

3.经过下面的语句inti,a[10],*p;定义后,下列语句中合法的是_____。

A.p=a+2;B.p=a[5];C.p=a[2]+2;D.p=&(i+2);

4.两个指针变量不可以_____。

A.相加B.比较C.相减D.指向同一地址5.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是_____。

A.intp=&x;B.int*p=x;C.int*p=&x;D.*p=*x;6.关于指针概念说法不正确的是_____。

A.一个指针变量只能指向同一类型的变量B.一个变量的地址称为该变量的指针C.只有同一类型变量的地址才能放到指向该类型变量的指针变量之中D.指针变量可以由整数赋,不能用浮点数赋7.设有说明int(*ptr)[M];,其中标识符ptr是_____。

A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M个整型元素的一维数组的指针

D.具有M个指针元素的一维指针数组,每个元素都只能指向整型量8.下面选择中正确的赋值语句是(设chara[5],*p=a;)_____。

A.p="abcd";B.a="abcd";C.*p="abcd";D.*a="abcd";9.定义由n个指向整型数据的指针组成的数组p,其正确的方式为_____。

A.intp;B.int(*p)[n];C.int*p[n];D.int(*p)();

10.具有相同类型的指针类型变量p与数组a,不能进行的操作是_____。

A.p=a;B.*p=a[0];C.p=&a[0];D.p=&a;

11.以下正确的定义和语句是_____。

A.inta[10],*p;char*s;p=a;s=a;B.doublea[5][3],b[5][3],*s;s=a;b=a;C.floata[5][3],*p[3];p[0]=a[0];p[2]=a[4];D.inta[5][3],(*pb)[5],(*pp)[3];pb=a;pp=a;12.若有下列定义,则对a数组元素地址的正确引用是_____。

inta[5],*p=a;A.&a[5]B.p+2C.a++D.&a

13.若有下列定义和语句,则对a数组元素的非法引用是_____。

inta[2][3](*pt)[3];pt=a;A.pt[0][0]B.*(pt+1)[2]C.*(pt[1]+2)D.*(a[0]+2)

14.若有下列定义,则对a数组元素的正确引用是_____。

inta[5],*p=a;A.*(p+5)B.*p+2C.*(a+2)D.*&a[5]

15.若有下列定义和语句,则对a数组元素的非法引用是_____。

inta[2][3],*prt[2],i;for(i=0;i<2;i++)prt[i]=a[i];A.ptr[0][0]B.*(a+1)[2]C.*(ptr[1]+2)D.*(&a[0][0]+2)

16.以下程序段:

char*alp[]={"ABC","DEF","GHI"};inti;puts(alp[1]);的输出结果是_____。

A.AB.ADGC.ABCD.DEF17.下面各语句行中,能正确进行赋字符串操作的是_____。

A.chars[5]="{′a′,′b′,′c′,′d′,′e′}B.char*s;gets(s);C.char*s;s="NOPQRS";D.chars[5];scanf("%s",&s);18.设有以下语句:

charstr[4][12]={"aaa","bbb","ccc","ddd"},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];若0≤k<4,下列选项中对字符串的非法引用是_____。

A.strpB.str[k]C.strp[k]D.*strp

18.若有inta[][]={{1,2},{3,4}};则*(a+1),*(*a+1)的含义分别为_____。

A.非法,2B.&a[1][0],2C.&a[0][1],3D.a[0][0],4

20.若有以下的定义、说明和语句,则值为101的表达式是_____。

structwc{inta;int*b;}*p;intx0[]={11,12},x1[]={31,32};staticstructwcx[2]={100,x0,300,x1};p=x;A.*p->bB.p->aC.++p->aD.(p++)->a

21.若有以下的说明、定义和语句,则值为31的表达式是_____。

structwc

{inta;

int*b;

}*p;

intx0[]={11,12},x1[]={31,32};staticstructwcx[2]={100,x0,300,x1};p=x;A.*p->bB.(++p)->aC.*(p++)->bD.*(++p)->b

22.typedeflongintBIGGY;的作用是_____。

A.建立了一种新的数据类型B.定义了一个整型变量C.定义了一个长整型变量D.说明了一个新的数据类型标识符

23.设有以下语句:

structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,′\0′},*p;p=&a[0];则值为6的表达式是_____。

A.p++->nB.p->n++C.(*p).n++D.++p->n24.若有定义:

char*p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为_____。

A.p1=&ch;scanf("%c",p1);B.p2=(char*)malloc

(1);scanf("%c",p2);C.*p3=getchar();D.p4=&ch;*p4=getchar();25.若有以下定义和语句,且0≤i<10,则对数组元素地址的正确表示是_____。

inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;p=a;A.&(a+1)B.a++C.&pD.&p[i]

26.已知职工记录描述为:

structworkers

{intno;

charname[20];

charsex;

struct

{intday;

intmonth;

intyear;

}birth;

};

structworkersw;设变量w中的“生日”是“1993年10月25日”,下列对“生日”的正确赋值方式是_____。

A.day=25;B.w.day=25;month=10;w.month=10;year=1993;w.year=1993;C.w.birth.day=25;D.birth.day=25;w.birth.month=10;birth.month=10;w.birth.year=1993;birth.year=1993;

27.当定义一个结构体变量时,系统分配给它的内存是_____。

A.各成员所需内存量的总和B.成员中占内存量最大者所需的容量

C.结构中第一个成员所需内存量D.结构中最后一个成员所需内存量

29.设有如下定义:

structsk{

inta;floatb;}data,*p;若要使p指向data中的a域,正确的赋值语句是_____。

A.p=(structsk*)&data.a;B.p=(structsk*)data.a;C.p=&data.a;D.*p=data.a;30.以下对枚举类型名的定义中正确的是_____。

A.enuma={sum,mon,tue};B.enuma{sum=9,mon=-1,tue};C.enuma={"sum","mon","tue"};D.enuma{"sum","mon","tue"};

31.以下程序找出数组中最大值和此元素的下标,数组元素的值由键盘输入,请从对应的一组选择项中,选择正确的填入。

#include"stdio.h"main(){inta[10],*p,*s,i;for(i=0;i<10;i++)scanf("%d",___

(1)___);for(p=a,s=a;___

(2)___<10;p++)if(*p>*s)s=___(3)___;printf("max=%d,index=%d\n",___(4)___,___(5)___);

}

(1)A.*(a+i)B.p+iC.a+iD.a[i]

(2)A.p-aB.s-aC.a-pD.a-s(3)A.pB.a[p]C.a[s]D.a-p(4)A.a[p-a]B.a[p]C.*sD.a[s](5)A.p-aB.pC.s-aD.a-s

32.以下程序输出结果是_____。

#include"stdio.h"main(){inta[]={1,2,3,4,5,6},*p;p=a;*(p+3)+=2;printf("%d,%d\n",*p,*(p+3));}A.0,5B.1,5C.0,6D.1,6

33.以下程序输出两个整数中大的那个数,两个整数由键盘输入。

请从对应的一组选择项中,选择正确的填入_____。

#include"stdio.h"main(){inta,b,*p1,*p2;p1=___

(1)___malloc(sizeof(int));p2=___

(1)___malloc(sizeof(int));

scanf("%d%d",___

(2)___);if(*p2>*p1)*p1=*p2;free(p2);printf("max=%d\n",___(3)___);}

(1)A.intB.int*C.(int)D.(int*)

(2)A.*p1,*p2B.p1,p2C.&p1,&p2D.&a,&b(3)A.*p1B.*p2C.p1D.p2

34.在以下定义中:

int(*prt)[3];标识符prt_____。

A.定义不合法B.是一个指针数组名,每个元素是一个指向整数变量的指针C.是一个指针,它指向一个具有三个元素的一维数组D.是一个指向整型变量的指针

35.与以下定义等价的是_____。

int*p[4];A.intp[4];B.int*p;C.int*(p[4]);D.int(*p)[4];36.若有如下定义,且0≤i<4,则错误的赋值是_____。

inta[4][10],*p,*q[4];

A.p=a;B.q[i]=a[i];C.p=a[i];D.q[i]=&a[2][0];37.若有定义:

inta[4][10];则以下选项中对数组元素a[i][j]的错误引用是_____。

(此处0≤i<4,0≤j<10)A.*(&a[0][0]+10*i+j)B.*(a+i)[j]C.*(*(a+i)+j)D.*(a[i]+j)38.若有定义:

inta[4][3],b[3][4],(*prt)[3];且0≤i<3,则正确的赋值语句是_____。

A.prt=a;B.prt=b;C.prt=b[i];D.prt=a[i];39.以下程序建立一个如下所示的二维数组,并按以下格式输出。

请从对应的一组选择项中,选择正确的填入_____。

1000101010001000101010001#include"stdio.h"main(){inta[5][5]={0},*p[5],i,j;for(i=0;i<5;i++)p[i]=___

(1)___;for(i=0;i<5;i++){*(p[i]+___

(2)___)=1;*(p[i]+5-___(3)___)=1;}for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%2d",p[i][j]);___(4)___;}}

(1)A.&a[i][0]B.&a[i][1]C.&p[i]D.&a[0][i]

(2)A.0B.1C.iD.(i+1)

(3)A.0B.1C.iD.(i+1)(4)A.putchar("\n")B.putchar(′\n′)C.putchar(′\0′)D.printf(′\n′)

40.以下程序的输出结果是_____。

#include"stdio.h"main(){inta[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.8D.12

41.以下程序输出结果是_____。

#include"stdio.h"main(){inta[20],*p[4],i,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+=p[i][i];printf("%d\n",k);}A.数组元素引用不合法,输出结果不定B.26C.10D.6

42.若在C程序中有以下定义和语句,则以下各组中的表达式都是对a数组元素正确引用的是_____。

(其中0≤i<4,0≤j<3)main(){inta[4][3]={0},(*ptr)[3],i,j;ptr=a;…}A.a[i][j],a[i]+j,*(*(a+i)+j)B.*(ptr+i)[j],prt[i]+j,*(*(prt+i)+j)C.*(ptr+i)[j],*(a+i)[j],*(ptr+i)D.ptr[i][j],*(ptr[i]+j),*(a[i]+j)43.若有以下定义和语句,则对a数组元素错误引用的是_____。

inta[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]

44.若在C程序中有以下定义和语句,则以下各组中的表达式全部都是a数组元素的地址的是_____。

(其中0≤i<4,0≤j<3)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,pmain(){inta[4][3]={0},*p[4],**pa,i,j;for(i=0;i<4;i++)p[i]=a[i];pa=p;…}45.以下程序的输出结果为_____。

main(){inta[2]={10,20};int*pa=&a[0],*pb=&a[1];*pa=*(pb-1)+5;*(pa+1)=*pa-5;printf("%d,%d\n",a[0],a[1]);}A.2,5B.2,0C.5,0D.1,046.在下列程序段中,枚举变量c1,c2的值依次是_____,_____。

enumcolor{red,yellow,blue=4,green,white}c1,c2;c1=yellow;c2=white;printf("%d,%d\n",c1,c2);A.1,6B.2,5C.1,4D.2,6

47.下列语句执行后的结果是_____。

y=5;p=&y;x=*p++;A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=648.变量p为指针变量,若p=&a,下列说法不正确的有_____。

A.&*p==&aB.*&a==aC.(*p)++==a++D.*(p++)==a++

49.有以下程序:

main(){inta,*p;p=&a;a=100;printf("a=%d*p=%d*&a=%d&*p=%u",a,*p,*&a,&*p);a++;printf("a++=%d",a);(*p)++;printf("(*p)++=%d",*p);*p++;printf("*p++=%d\n",*p);}该程序运行结果为_____。

A.a=100*p=100*&a=100&*p=65498a++=101(*p)++=102*p++=-24B.a=100*p=100*&a=100&*p=65498a++=101(*p)++=102*p++=102C.a=100*p=100*&a=65498&*p=65498a++=101(*p)++=102*p++=-24D.a=100*p=100*&a=100&*p=65498a++=101(*p)++=101*p++=-24

50.以下程序执行的结果是_____。

point(char*pt);main(){charb[4]={′a′,′c′,′s′,′f′},*pt=b;point(pt);printf("%c\n",*pt);}point(char*p){p+=3;}A.sB.cC.fD.a51.以下程序的运行结果为_____。

char*c[]={"ENTER","NEW","POINT","FIRST"};char**cp[]={c+3,c+2,c+1,c};char***cpp=cp;main(){printf("%s\n",**++cpp);}A.ENTERB.NEWC.POINTD.FIRST52.以下程序的输出结果为_____。

#includemain(){chars[]="123",*p;p=s;printf("%c%c%c\n",*p++,*p++,*p++);}A.123B.321C.213D.31253.以下程序的执行结果为_____。

structs1{char*s;inti;structs1*sip;};main(){staticstructs1a[]={{"abcd",1,a+1},{"efgh",2,a+2},{"ijkl",3,a}};structs1*p=a;inti=0;printf("%s%s%s",a[0].s,p->s,a[2].sip->s);printf("%d%d",i+2,--a[i].i);printf("%c\n",++a[i].s[3]);}A.abcdabcdabcd20eB.abcdefghijkl20eC.abcdabcdijkl21eD.abcdabcdabcd21e

54.执行下面的语句组后,*a、*p、**p、*pp、**pp的值分别为_____。

inta[]={0,1,2,3,4};int*p[]={a,a+1,a+2,a+3,a+4};int**pp=p;A.0,0,0,0,0B.0,数组a的首地址,0,数组a的首地址,0C.0,1,2,3,4D.0,数组a的首地址,0,数组p的首地址,0选择题答案

1.C2.D3.A4.A5.C6.D7.C8.A9.C10.D11.C12.B13.B14.C15.B16.D17.C18.A19.B20.C21.D22.D23.D24.C25.D26.C27.A28.C29.A30.B31.

(1)C

(2)A(3)A(4)C(5)C32.D33.

(1)D

(2)B(3)A34.C35.C36.A37.B38.A39.

(1)A

(2)C(3)D(4)B40.D41.B42.D43.A44.B45.C46.A47.A48.D49.A50.D51.C52.B53.A54.B

5.2写出程序运行结果

1.以下语句段的输出结果是_____。

#include"stdio.h"

main()

{char*alp[]={"ABC","DEF","GHI"};inti;for(i=0;i<3;i++)puts(alp[i]);

}

2.若有以下的说明和语句,已知int类型占两个字节,则以下的输出结果为_____。

main()

{structst

{chara[10];

intb;

doublec;

};

printf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1