第十章 指针练习题.docx

上传人:b****1 文档编号:2424026 上传时间:2022-10-29 格式:DOCX 页数:12 大小:19.34KB
下载 相关 举报
第十章 指针练习题.docx_第1页
第1页 / 共12页
第十章 指针练习题.docx_第2页
第2页 / 共12页
第十章 指针练习题.docx_第3页
第3页 / 共12页
第十章 指针练习题.docx_第4页
第4页 / 共12页
第十章 指针练习题.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第十章 指针练习题.docx

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

第十章 指针练习题.docx

第十章指针练习题

第10章指针

同步练习一

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。

10.1若有下面的程序段:

chars[]="china";char*p;p=s;

则下列叙述正确的是

A)s和p完全相同

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

C)s数组长度和p所指向的字符串长度相等

D)*p与s[0]相等

正确答案:

D

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

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

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

正确答案:

D

10.3下列程序执行后的输出结果是

voidfunc(int*a,intb[])

{b[0]=*a+6;}

main()

{inta,b[5];

a=0;b[0]=3;

func(&a,b);printf("%d\n",b[0]);

}

A)6B)7C)8D)9

正确答案:

A

10.4已定义以下函数

fun(char*p2,char*p1)

{while((*p2=*p1)!

='\0'){p1++;p2++;}

}

函数的功能是

A)将p1所指字符串复制到p2所指内存空间

B)将p1所指字符串的地址赋给指针p2

C)对p1和p2两个指针所指字符串进行比较

D)检查p1和p2两个指针所指字符串中是否有'\0'

正确答案:

A

10.6下面说明不正确的是

A)chara[10]="china";B)chara[10],*p=a;p="china"

C)char*a;a="china";D)chara[10],*p;p=a="china"

正确答案:

D

10.8执行以下程序后,a,b的值分别为

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(*p1)/(*p2)+7;

printf("a=%d\n",a);

printf("b=%d\n",b);

}

A)-1,5B)1,6C)0,7D)4,10

正确答案:

C

10.10以下程序有错,错误原因是

main()

{int*p,i;char*q,ch;

p=&i;

q=&ch;

*p=40;

*p=*q;

......

}

A)p和q的类型不一致,不能执行*p=*q;语句

B)*p中存放的是地址值,因此不能执行*p=40;语句

C)q没有指向具体的存储单元,所以*q没有实际意义

D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

正确答案:

D

10.11下面程序段的运行结果是

chara[]="lanuage",*p;

p=a;

while(*p!

=′u′){printf("%c",*p-32);p++;}

A)LANGUAGEB)languageC)LAND)langUAGE

正确答案:

C

10.12有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)

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

A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))

正确答案:

D

10.13函数fun的返回值是

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!

=′\0′)num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

A)字符串a的长度B)字符串b的长度

C)字符串a和b的长度之差D)字符串a和b的长度之和

正确答案:

D

10.15下面判断正确的是

A)char*a="china";等价于char*a;*a="china";

B)charstr[5]={"china"};等价于charstr[]={"china"};

C)char*s="china";等价于char*s;s="china";

D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";

正确答案:

C

10.17有如下说明

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

则数值为9的表达式是

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

正确答案:

B

10.19下列程序的运行结果是

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

A)63B)36C)编译出错D)00

正确答案:

B

10.20若有说明语句

chara[]="Itismine";

char*p="Itismine";

则以下不正确的叙述是

A)a+1表示的是字符t的地址

B)p指向另外的字符串时,字符串的长度不受限制

C)p变量中存放的地址值可以改变

D)a中只能存放10个字符

正确答案:

D

10.21以下程序的运行结果是

sub(intx,inty,int*z)

{*z=y-x;}

main()

{inta,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf("%4d,%4d,%4d\n",a,b,c);

}

A)5,2,3B)-5,-12,-7

C)-5,-12,-17D)5,-2,-7

正确答案:

B

10.23下面程序的输出结果是

#include

#include

main()

{char*p1="abc",*p2="ABC",str[50]="xyz";

strcpy(str+2,strcat(p1,p2));

printf("%s\n",str);

}

A)xyzabcABCB)zabcABC

C)xyabcABCD)yzabcABC

正确答案:

C

 

 

  

同步练习二

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。

10.1b下列关于指针变量赋空值的说法错误的是

A)当赋空值的时候,变量指向地址为0的存储单元

B)赋值语句可以表达为变量名=′\0′;

C)赋值语句可以表达为变量名=0;

D)一个指针变量可以被赋空值

正确答案:

A

10.4b下列程序是用来判断数组中特定元素的位置所在。

如果输入如下整数:

876675896101301401980431451777

#include

#include

intfun(int*s,intt,int*k)

{inti;

*k=0;

for(i=0;i

if(s[*k]

returns[*k];

}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);

}

则输出结果为

A)7,431B)6C)980D)6,980

正确答案:

D

10.6b有以下程序

#include

main()

{char*p="abcde\0fghjik\0";

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

}

程序运行后的输出结果是

A)12B)15C)6D)5

正确答案:

D

10.8b阅读下面程序,执行后的结果为

#include"stdio.h"

voidfun(int*a,int*b)

{intk;

k=5;

*a=k;

*b=*a+k;}

main()

{int*a,*b,x=10,y=15;

a=&x;

b=&y;

fun(a,b);

printf("%d,%d\n",*a,*b);

}

A)10,15B)5,15C)5,10D)15,10

正确答案:

C

10.10b阅读下列程序,则执行后的结果为

#include"stdio.h"

main()

{intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};

printf("%x,%x\n",c[2][2],*(*(c+1)+1));

}

A)3e,6B)62,5C)56,5D)3E,6

正确答案:

A

10.12b现有如下程序段

#include"stdio.h"

int*fun(int*a,int*b)

{intc;

c=*a%*b;

return&c;

}

main()

{inta=5,b=19,*c;

c=fun(&a,&b);

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

}

则程序段执行后的结果为

A)8B)7C)6D)5

正确答案:

C

10.13b现有inta,*b;,b=&a;,则下列运算错误的是

A)*&aB)&*aC)*&bD)&*b

正确答案:

B

10.14b现有如下定义语句

int*p,s[20],i;

p=s;

表示数组元素s[i]的表达式不正确的是

A)*(s+i)B)*(p+i)

C)*(s=s+i)D)*(p=p+i)

正确答案:

C

10.15b阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是

#include"stdio.h"

#defineN10

int*fun(inta[N],intn)

{inti,b[N];

for(i=0;i

b[i]=a[i];

return(b);

}

main()

{inta[N]={12,34,45,5,6,34,4,655,2};

int*k;

k=fun(a[N],5);

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

}

A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告

B)return语句不应该有括号,所以在这里会有警告

C)return语句的返回值类型与指针k的基类型不一致,这里会产生警告

D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告

正确答案:

A

10.16b现有如下程序段

#include"stdio.h"

main()

{inta[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};

inti=0,j=5;

printf("%d\n",*(&a[0][0]+2*i+j-2));

}

则程序的输出结果为

A)21B)78C)23D

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

当前位置:首页 > 求职职场 > 面试

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

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