第九章指针.docx

上传人:b****1 文档编号:15054533 上传时间:2023-06-30 格式:DOCX 页数:30 大小:38.20KB
下载 相关 举报
第九章指针.docx_第1页
第1页 / 共30页
第九章指针.docx_第2页
第2页 / 共30页
第九章指针.docx_第3页
第3页 / 共30页
第九章指针.docx_第4页
第4页 / 共30页
第九章指针.docx_第5页
第5页 / 共30页
第九章指针.docx_第6页
第6页 / 共30页
第九章指针.docx_第7页
第7页 / 共30页
第九章指针.docx_第8页
第8页 / 共30页
第九章指针.docx_第9页
第9页 / 共30页
第九章指针.docx_第10页
第10页 / 共30页
第九章指针.docx_第11页
第11页 / 共30页
第九章指针.docx_第12页
第12页 / 共30页
第九章指针.docx_第13页
第13页 / 共30页
第九章指针.docx_第14页
第14页 / 共30页
第九章指针.docx_第15页
第15页 / 共30页
第九章指针.docx_第16页
第16页 / 共30页
第九章指针.docx_第17页
第17页 / 共30页
第九章指针.docx_第18页
第18页 / 共30页
第九章指针.docx_第19页
第19页 / 共30页
第九章指针.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第九章指针.docx

《第九章指针.docx》由会员分享,可在线阅读,更多相关《第九章指针.docx(30页珍藏版)》请在冰点文库上搜索。

第九章指针.docx

第九章指针

第九章指针

一、选择题

1.变量的指针,其含义是指该变量的。

(0级)

A)值B)地址C)名D)一个标志

2.设有说明int(﹡ptr)[M];其中ptr是。

(0级)

A)M个指向整型变量的指针

B)指向M个整型变量的函数指针

C)一个指向具有M个整型元素的一维数组的指针

D)具有M个指针元素的一维指针数组,每个元素都只能指向整型量

3.选择出i的正确结果。

(1级)

inti;char﹡s=〞a\045+045\ˊb〞;for(i=0;s++;i++);

A)5B)8C)11D)12

4.如下程序的执行结果是。

(1级)

#include

main(){inti;char﹡s=〞a\\\\\n〞;for(i=0;s[i]!

=’\0’;i++)printf(〞%c〞,﹡(s+i));}

A)aB)a\C)a\\D)a\\\\

5.如下程序的执行结果是。

(2级)

#include

main(){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,4

6.如下程序的执行结果是。

(2级)

#include

main(){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)17

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

(1级)

inta[5],﹡p=a;

A)﹡&a[5]B)a+2C)﹡(p+5)D)﹡(a+2)

8.若有以下定义,则对a数组元素地址的正确引用是。

(1级)

inta[5],﹡p=a;

A)p+5B)﹡a+1C)&a+1D)&a[0]

9.若有定义:

inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素值的正确引用为。

(1级)

A)﹡(﹡(a+i)+j)B)(a+i)[j]C)﹡(a+i+j)D)﹡(a+i)+j

10.若有定义:

inta[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的正确引用为。

(1级)

A)﹡(a[i]+j)B)(a+i)C)﹡(a+j)D)a[i]+j

11.设有下面的程序段:

chars[]=〞china〞;char﹡p;p=s;

则下列叙述正确的是。

(0级)

A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等

C)s数组长度和p所指向的字符串长度相等D)﹡p与s[0]相等

12.若有语句:

chars1[]=〞string〞,s2[8],﹡s3,﹡s4=〞string2〞;则对库函数strcpy的错误调用是。

(1级)

A)strcpy(s1,〞string2〞);B)strcpy(s4,〞string1〞);

C)strcpy(s3,〞string1〞);D)strcpy(s1,s2);

13.若有定义:

inta[5];则a数组中首元素的地址可以表示为。

(1级)

A)&aB)a+1C)aD)&a[1]

14.以下与int﹡q[5];等价的定义语句是。

(1级)

A)intq[5]B)int﹡q

C)int﹡(q[5]);D)int(﹡q)[5];

15.若有以下定义,则﹡(p+5)表示。

(1级)

A)元素a[5]的地址B)元素a[5]的值

C)元素a[6]的地址D)元素a[6]的值

16.若有定义:

int﹡p[4];则标识符p。

(0级)

A)是一个指向整型变量的指针

B)是一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组

D)说明不合法

17.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是。

(1级)

A)a,point,*&aB)&*a,&a,*point

C)*&point,*point,&aD)&a,&*point,point

18.若有说明:

int*p,m=5,n;以下正确的程序段是。

(1级)

A)p=&n;scanf(“%d”,&p);B)p=&n;scanf(“%d”,*p);

C)scanf(“%d”,&n);*p=n;D)p=&n;*p=m;

19.下面程序段的运行结果是。

(1级)

charstr[]=“ABC”,*p=str;

printf(“%s\n”,*(p+1));

A)66B)BCC)字符‘B’的地址D)字符‘B’

20.已有定义intk=2,*ptr1,*ptr2;且ptr1和ptr2均已指向同一个变量k,下面不正确执行的赋值语句是:

(1级)

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);

}

编译时出现错误,以下叙述中正确的是。

(1级)

A)程序中只有a='\';语句不正确。

B)b='\xbc';语句不正确。

C)d="\0127";语句不正确。

D)a='\';和c='\0xab';语句都不正确。

22.若有一些定义和语句

#include

inta=4,b=3,*p,*q,*w;

p=&a;q=&b;w=q;q=NULL;

则以下选项中错误的语句是。

(1级)

A)*q=0;B)w=p;C)*p=&a;D)*p=*w;

23.有以下程序

int*f(int*x,int*y)

{if(*x<*y)

returnx;

else

returny;

}

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

执行后输出结果是。

(2级)

A)7,8,8B)7,8,7C)8,7,7D)8,7,8

24.有以下程序

main()

{char*s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是。

(1级)

A)n,twoB)t,oneC)w,oneD)o,two

25.有以下程序

main()

{intx[8]={8,7,6,5,0,0},*s;

s=x+3;

printf("%d\n",s[2]);

}

执行后输出结果是。

(1级)

A)随机值B)0C)5D)6

26.有以下程序

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);}

执行后输出结果是。

(1级)

A)yz<回车>xyzB)z<回车>yz

C)z<回车>yz<回车>xyzD)x<回车>xy<回车>xyz

27.有以下程序

main()

{inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;

pa=a;

for(i=0;i<3;i++)

if(i<2)pa[1][i]=pa[1][i]-1;

elsepa[1][i]=1;

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

}

执行后输出结果是。

(2级)

A)7B)6C)8D)无确定值

28.有以下程序

voidfun(int*a,inti,intj)

{intt;

if(i

{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;i<6;i++)

printf("%d",a[i]);

}

执行后输出结果是。

(2级)

A)654321B)432156

C)456123D)123456

29.有以下程序

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〈回车〉

则运行结果为。

(2级)

A)6B)8C)3D)4

30.有如下程序段

int*p,a=10,b=1

p=&a;a=*p+b;

执行该程序段后,a的值为。

(1级)

A)12B)11C)10D)编译出错

31.对于基类型相同的两个指针变量之间,不能进行的运算是。

(0级)

A)

32.以下函数返回a所指数组中最小的值所在的下标值。

fun(int*a,intn)

{inti,j=0,p;

p=j;

for(i=j;i

return(p);}

在下划线处应填入的是。

(0级)

A)i=pB)a[p]=a[i]C)p=jD)p=i

33.有如下说明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为9的表达式是。

(1级)

A)*p+9B)*(p+8)C)*p+=9D)p+8

34.有如下程序

main()

{chars[]=”ABCD”,*P;

for(p=s+l;p;p++)printf(“%s\n”,*p);}

该程序的输出结果是。

(2级)

A)ABCDB)AC)BD)BCD

BCDBCCD

CDCDD

DD

35.有如下程序

main()

{charch[2][5]={“6937”,”8254”},*p[2];

inti,j,s=0;

for(i=0;i<2;i++)p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>’\0’;j+=2)

s=10*s+p[i][j]-‘0’;

printf(“%d\n”,s);

}

该程序的输出结果是。

(2级)

A)69825B)63825C)6385D)

36.执行以下程序后,a的值为。

(1级)

int*p,a=10,b=1;

p=&a;a=*p*b;

A)12B)编译出错C)10D)1

37.以下各语句或语句组中,正确的操作是。

(1级)

A)chars[5]="abcde"B)char*s;gets(s);

C)char*s;s="abcde";D)chars[5];scanf("%s",&s);

38.若已定义:

inta[9],*p=a;并在以后的语句中未改变p的值,则不能表示a[1]地址的表达式是。

(1级)

A)p+1B)a+1C)a++D)++p

39.下列语句行中,哪些语句能正确进行字符串赋值操作。

(1级)

A)charst[4][5]

B)chars[5]={‘A’,‘B’,‘C’,‘D’,’E’}

C)char*s;s=“ABCDE”;

D)char*s;scanf(“%s”,s);

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

(1级)

#include

voidmain(void)

{chara[]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf(“%d”,*--p);

}

A)非法B)a[4]的地址C)3D)5

41.以下程序的运行结果是。

(2级)

#include

voidmain(void)

{inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int*p[4],j;

for(j=0;j<4;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,5

42.若有下列说明和语句:

inta[4][5],(*p)[5];p=a;则对a数组元素的正确引用是。

(1级)

A)p+1B)*(p+3)C)*(p+1)+3D)*(*p+2)

43.若有以下定义和语句,则输出结果是。

(2级)

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,20

44.若有以下定义和语句,则输出结果为。

(1级)

char*sp=”\t\b\\\0English\n”;

printf(“%d”,strlen(sp));

A)12B)3C)17D)13

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

(2级)

voidmain()

{inta=5,*p1,**p2;

p1=&a,p2=&p1;

(*p1)++;

printf(“%d\n”,**p2);

}

A)5B)4C)6D)不确定

46.设voidf1(int*m,longn);inta;longb;则以下调用合法的是。

(2级)

A)f1(a,b);B)f1(&a,b);

C)f1(a,&b);D)f1(&a,&b);

47.设intx;,则经过后,语句*px=0;可将x值置为0。

(1级)

A)int*px;B)int*px=&x;

C)float*px;D)float*px=&x;

48.若有说明:

inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是。

(1级)

A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;

49.以下定义语句中,错误的是。

(1级)

A)inta[]={1,2};B)char*a[3];

C)chars[10]="test";D)intn=5,a[n];

50.阅读以下函数

fun(char*sl,char*s2)

{inti=0;

while(sl[i]==s2[i]&&s2[i]!

='\0')i++;

return(sl[i]=='\0'&&s2[i]=='\0');

}

此函数的功能是。

(2级)

A)将s2所指字符串赋给s1

B)比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C)比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D)比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

51.若有以下定义:

inta[10],*p=a;则*(p+3)表示的是。

(01~02第二学期试题)

A)元素a[3]的地址B)元素a[3]的值

C)元素a[4]的地址D)元素a[4]的值

52.若有如下语句:

int*p1,*p2;则其中int所指的是。

(01~02第二学期试题)

A)p1的类型B)*p1和*p2的类型

C)p2的类型D)p1和p2所能指向变量的类型

53.有如下语句:

inta=5,b=8,*p1,*p2;

p1=&a;p2=&b;

若有如下表达式:

p1=p2;则能正确表示该语句执行后变量在内存中的存储结构的图示为。

(01~02第二学期试题)

A)B)

p15ap15a

p28bp28b

C)D)

p15ap15a

p28bp28b

54.有如下语句inta=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示;若实现如图2所示的存储结构,可选用的赋值语句是:

(往届试题)

p1p2p1p2

abab

10201020

图1图2

A)*p1=*p2B)p1=p2C)p1=*p2D)*p1=p2

55.若有说明:

inti,j,*p=&i;则下面语句中与i=j;等价的语句是:

(往届试题)

A)*p=*&j;B)i=*pC)i=&j;D)i=**p

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

(2级)

main()

{char*s="121";

intk=0,a=0,b=0;

do

{k++;

if(k%2==0){a=a+s[k]-'0';continue;}

b=b+s[k]-'0;a=a+s[k]-'0';

}while(s[k+1]);

printf("k=%da=%db=%d\n",k,a,b);

}

A)k=3a=2b=3B)k=3a=3b=2

C)k=2a=3b=2D)k=2a=2b=3

57.设有以下定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*ptr)[3]=a,*p=a[0];

则下列能正确表示数组元素a[1][2]的表达式是。

(1级)

A)*((*ptr+1)[2])B)*(*(p+5))

C)(*ptr+1)+2D)*(*(a+1)+2)

58.执行以下程序后,y的值是。

(1级)

main()

{inta[]={2,4,6,8,10};

inty=1,x,*p;

p=&a[1];

for(x=0;x<3;x++)

y+=*(p+x);

printf("%d\n",y);

}

A)17B)18C)19D)20

59.阅读程序

#include

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf("%x\n",p);

printf("%x\n",p+9);

}

该程序有两个printf语句,假设第一个printf语句输出的是194,则第二个printf语句输出结果是。

(1级)

A)203B)204C)1a4D)1a6

60.下列程序的输出结果是。

(2级)

main()

{staticintnum[5]={2,4,6,8,10};

int*n,**m;

n=num;

m=&n;

printf("%d",*(n++));

printf("%d\n",**m));

}

A)44B)22C)24D)46

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

(2级)

#include

fut(int**s,intp[2][3])

{**s=p[1][1];}

main()

{inta[2][3]={1,3,5,7,9,11},*p;

p=(int*)malloc(sizeof(int));

fut(&p,a);

printf("%d\n",*p);

}

A)1B)7C)9D)11

62.inta[10],*p;下列表达式正确的是。

(1级)

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

63.执行以下程序段后y的值为。

(1级)

staticinta[]={1,3,5,7,9};

inty,x,*ptr;

y=1;

ptr=&a[1];

for(x=0;x<3;x++)

y*=*(ptr+x);

A)105B)15C)945D)无确定值

64.执行以下程序段后,m的值是。

(1级)

staticinta[]={7,4,6,3,10};

intm,k,*ptr;

m=10;

ptr=&a[0];

for(k=0;k<5;k++)

m=(*(ptr+k)

*(ptr+k):

m;

A)10B)7C)4D)3

65.执行以下程序段后,m的值为。

(1级)

staticinta[2][3]={1,2,3,4,5,6};

intm,*ptr;

ptr=&a[0][0];

m=(*ptr)*(*(ptr+2))*(*(ptr+4));

A)15B)48C)24D)无定值

66.若有以下定义和语句

intw[2][3],(*pw)[3];pw=w;

则对w数组元素的非法引用是。

(1级)

A)*(w[0]+2)B)*(pw+1)[2]

C)pw[0][0]D)*(pw[1]+2)

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

(1级)

Staticinta[2][3]={1,2,3,4,5,6},(*p)[2],I;

p=a;

for(I=0;I<3;I++)

printf("%d",*(*(p+1)+I));

A)输出不确定B)345

C)234D)456

68.若有以下定义

inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;

则值为3的表达式是。

(1级)

A)p+=2,*(p++)B)p+=2,*++p

C)p+=3,*p++D)p+=2,++*p

69.若有以下定义和语句

inta[10]={1,2,3,4,5,6,

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

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2