第五章指针文档格式.docx
- 文档编号:18224040
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:17
- 大小:32.12KB
第五章指针文档格式.docx
《第五章指针文档格式.docx》由会员分享,可在线阅读,更多相关《第五章指针文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
C.int*p[n];
10.具有相同类型的指针类型变量p与数组a,不能进行的操作是_____。
A.p=a;
B.*p=a[0];
a[0];
a;
11.以下正确的定义和语句是_____。
A.inta[10],*p;
char*s;
p=a;
s=a;
B.doublea[5][3],b[5][3],*s;
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数组元素的正确引用是_____。
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];
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++)->
21.若有以下的说明、定义和语句,则值为31的表达式是_____。
structwc
{inta;
}*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=&
则值为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);
p2);
C.*p3=getchar();
D.p4=&
*p4=getchar();
25.若有以下定义和语句,且0≤i<
10,则对数组元素地址的正确表示是_____。
inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;
(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;
D.*p=data.a;
30.以下对枚举类型名的定义中正确的是_____。
A.enuma={sum,mon,tue};
B.enuma{sum=9,mon=-1,tue};
C.enuma={"
sum"
mon"
tue"
D.enuma{"
31.以下程序找出数组中最大值和此元素的下标,数组元素的值由键盘输入,请从对应的一组选择项中,选择正确的填入。
#include"
stdio.h"
main(){inta[10],*p,*s,i;
10;
i++)scanf("
%d"
___
(1)___);
for(p=a,s=a;
___
(2)___<
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"
main(){inta[]={1,2,3,4,5,6},*p;
*(p+3)+=2;
%d,%d\n"
*p,*(p+3));
}A.0,5B.1,5C.0,6D.1,6
33.以下程序输出两个整数中大的那个数,两个整数由键盘输入。
请从对应的一组选择项中,选择正确的填入_____。
main(){inta,b,*p1,*p2;
p1=___
(1)___malloc(sizeof(int));
p2=___
(1)___malloc(sizeof(int));
%d%d"
___
(2)___);
if(*p2>
*p1)*p1=*p2;
free(p2);
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"
main(){inta[5][5]={0},*p[5],i,j;
5;
i++)p[i]=___
(1)___;
i++){*(p[i]+___
(2)___)=1;
*(p[i]+5-___(3)___)=1;
}for(i=0;
i++){for(j=0;
j<
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.以下程序的输出结果是_____。
main(){inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;
i++)p[i]=&
a[i*3];
%d\n"
p[3][2]);
}A.输出项不合法,输出结果不定B.6C.8D.12
41.以下程序输出结果是_____。
main(){inta[20],*p[4],i,k=0;
20;
i++)a[i]=i;
a[i*(i+1)];
i++)k+=p[i][i];
k);
}A.数组元素引用不合法,输出结果不定B.26C.10D.6
42.若在C程序中有以下定义和语句,则以下各组中的表达式都是对a数组元素正确引用的是_____。
(其中0≤i<
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;
3;
a[i*4];
pp=p;
A.a[12]B.p[2][3]C.a[10]D.pp[0][1]
44.若在C程序中有以下定义和语句,则以下各组中的表达式全部都是a数组元素的地址的是_____。
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;
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;
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;
c1,c2);
A.1,6B.2,5C.1,4D.2,6
47.下列语句执行后的结果是_____。
y=5;
y;
x=*p++;
A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=648.变量p为指针变量,若p=&
a,下列说法不正确的有_____。
*p==&
aB.*&
a==aC.(*p)++==a++D.*(p++)==a++
49.有以下程序:
main(){inta,*p;
a=100;
a=%d*p=%d*&
a=%d&
*p=%u"
a,*p,*&
*p);
a++;
a++=%d"
a);
(*p)++;
(*p)++=%d"
*p);
*p++;
*p++=%d\n"
}该程序运行结果为_____。
A.a=100*p=100*&
a=100&
*p=65498a++=101(*p)++=102*p++=-24B.a=100*p=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*&
*p=65498a++=101(*p)++=101*p++=-24
50.以下程序执行的结果是_____。
point(char*pt);
main(){charb[4]={′a′,′c′,′s′,′f′},*pt=b;
point(pt);
%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.以下程序的输出结果为_____。
#include<
stdio.h>
main(){chars[]="
123"
*p;
p=s;
%c%c%c\n"
*p++,*p++,*p++);
}A.123B.321C.213D.31253.以下程序的执行结果为_____。
structs1{char*s;
structs1*sip;
main(){staticstructs1a[]={{"
1,a+1},{"
efgh"
2,a+2},{"
ijkl"
3,a}};
structs1*p=a;
inti=0;
%s%s%s"
a[0].s,p->
s,a[2].sip->
i+2,--a[i].i);
++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.以下语句段的输出结果是_____。
main()
{char*alp[]={"
i++)puts(alp[i]);
}
2.若有以下的说明和语句,已知int类型占两个字节,则以下的输出结果为_____。
main()
{structst
{chara[10];
intb;
doublec;
printf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 指针 第五