c语言指针习题集与答案.docx

上传人:李司机 文档编号:6869112 上传时间:2024-03-13 格式:DOCX 页数:7 大小:45.78KB
返回 下载 相关 举报
c语言指针习题集与答案.docx_第1页
第1页 / 共7页
c语言指针习题集与答案.docx_第2页
第2页 / 共7页
c语言指针习题集与答案.docx_第3页
第3页 / 共7页
c语言指针习题集与答案.docx_第4页
第4页 / 共7页
c语言指针习题集与答案.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《c语言指针习题集与答案.docx》由会员分享,可在线阅读,更多相关《c语言指针习题集与答案.docx(7页珍藏版)》请在三一办公上搜索。

1、指针习题及答案一.选择题1.变量的指针,其含义是指该变量的医A)值B)地址C)名D)一个标志2 .己有定义intk=2;int*ptrl,*ptr2;且ptrl和ptr2均己指向变量k,下面不能正确执行的赋值语句是A)k=*ptrl+*ptr2B)ptr2=kC)ptrl=ptr2D)k=*ptrl*(*ptr2)3 .假设有说明:int*p,m=5,n;以下程序段正确的选项是必A)p=&n;B)P=&n;SCanf(d”,&p);SCanf(d,*p);C)SCanf(d”,&n);D)p=&n;*p=n;*p=m;4 .己有变量定义和函数调用语句:inta=25;PrintNaIUe(&a

2、);下面函数的输出结果是必voidprint_value(int*x)Printf(dn”,+*x);)A)23B)24C)25D)265 .假设有说明:int*pl,*p2,m=5,n;以下均是正确赋值语句的选项是如A)pl=&m;p2=&pl;B)pl=&m;p2=&n;*pl=*p2;C)pl=&m;p2=pl;D)pl=&m;*pl=*p2;6 .假设有语句:int*p,a=4;和P=&a;下面均代表地址的一组选项是A)a,p,*&aB)&*a,&a,*pC)*&p,*p,&aD)&a,&*p,p7 .下面判断正确的选项是C。A) char*a=,zChina;等价于char*a;*a

3、=zzchinaz,;B) charstr10=44chinaw);等价于charstrIO;str=uchinaw;)C) char*s=wchina,z;等价于char*s;s=ffchina,z;D) charc4=z,abc,z,d4=wabc”;等价于charcl4J=d4=zzabcz;8 .下面程序段中,for循环的执行次数是CoChar*s=ta018bcv;for(;*s!=,0,;s+)Printf(*);A)9B)7C)6D)59 .下面能正确进展字符串赋值操作的是C。A)chars5=tlABCDE;B)CharS5=A,B,C,D,E;C)char*s;s=ABCDE

4、”;D)char*s;SCanf(s”,s);10 .下面程序段的运行结果是C。char*s=z,abcdez,;s+=2;printfC%d,z,s);A)cdeB)字符QC)字符Q的地址D)不确定IL设Pl和p2是指向同一个字符串的指针变量,c为字符变量,那么以下不能正确执行的赋值语句是次A)c=*pl+*p2B)p2=cC)pl=p2D)c=*pl*(*p2)12.设有程序段:CharS=Chin设;程ar*p;p=s;那么下面表达正确的选项是RoA)S和P完全一样B)数组S中的内容和指针变量P中的内容相等C) S数组长度和P所指向的字符串长度相等D) *p与s0相等13.以下与库函数S

5、trCPy(Char*pl,char*p2)功能不相等的程序段是A) strcpy1(char*pLchar*p2)(while(*pl+=*p2+)!=,0,);B) strcpy2(char*p1,char*p2)while(*pl=*p2)!=,0,)pl+;p2+)C) strcpy3(char*pLchar*p2)(while(*pl+=*p2+);)D) strcpy4(char*pl,char*p2)while(*p2)*pl+=*p2+;J14.下面程序段的运行结果是2。chara=wlanguagew,*p;P=a;while(*p!=,u,)Printf(%c”,*p-32

6、);p+;)A)LANGUAGEB)languageC)LANGD)IangUAGE16.以下与库函数StrCmP(Char*s,char*t)功能相等的程序段是A)strcmpI(char*s,char*t)for(;*s+=*t+;)if(*s=,0,)return0;return(*s-*t);)B) strcmp2(char*s,char*t)for(;*s+=*t+;)if(!*s)return0;return(*s*t);JC) strcmp3(char*s,char*t)for(;*t=*s;)if(!*t)return0;t+;s+;)return(*s*t);)D) strc

7、mp4(char*s,char*t)for(;*s=*t;s+,t+)if(!*s)return0;return(*t*s);)17 .以下说明不正确的选项是D。A)Charan0=chinaz,;B)chara10,*p=a;p=/zchina*;C)char*a;a=wChina”;D)chara10,*p;p=a=wChina;18 .设有说明语句:chara=wItismine;Char*p=,zItismine;那么以下不正确的表达是D。A) a+1表示的是字符t的地址B) P指向另外的字符串时,字符串的长度不受限制C) P变量中存放的地址值可以改变A)s+1B)s+C)fcs0+l

8、D&sl20.假设有定义:inta5,*p=a;那么对a数组元素的正确引用是Q。A)*&a5B)a+2C)*(p+5)D)*(a+2)21.假设有定义:inta5,*p=a;那么对a数组元素地址的正确引用是A)p+5B)*a+lC)&a+lD)&a022.假设有定义:inta23;那么对a数组的第i行第j列元素值的正确引用是A0A)*(*(a+i)j)B)(a+i)jC)*(a+i+j)D)*(a+i)+jD)a中只能存放10个字符19.假设己定义Chars10;那么在下面表达式中不表示sl的地址是123.假设有定义:inta23;那么对a数组的第i行第j列元素地址的正确引用是必A)*(ai+

9、j)B)(a+i)24.假设有程序段:inta23,(*p)3;C) *(a+j)D ai+jp=a;那么对a数组元素地址的正确引用是。A)*(p+2)B)p2Cpl+lD(p+1)+225 .假设有程序段:inta23,(*p)3;p=a;那么对a数组元素的正确引用是加A)(p+l)OJB)*(*(p+2)+l)C)*(pl+l)Dpl+226 .假设有定义:inta5;那么a数组中首元素的地址可以表示为CoA)&aB)a+lC)aD)&al27 .假设有定义:int(*p)4;那么标识符pg。A)是一个指向整型变量的指针B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数

10、组D)定义不合法28 .以下与int*q5;等价的定义语句是C。A)intq5B)int*qC)int*(q5)Dint(*q)529 .以下正确的说明语句是乐A) int*b=l,37,9);B) inta5,*11um5=&a0,&a1,&a2,&a3,&a4;C) inta=1,3,5,7,9);int*num5=a0J,al,a2,a3,a4;D) inta34,(tnum)4;numl=&al3;30.假设有定义:intb46,*p,*q4;且0i4,那么不正确的赋值语句是D.A)qi=bi;Bp=b;C)p=bi;D)qiJ=&bOOj32 .假设要对a进展自减运算,那么a应有下面

11、说明必A)intp3;Bintk;C)char*a3int*a=p;int*a=&k;33 .以下选项中,对指针变量P的正确操作是R。A)inta3,*p;Binta5,*p;C)inta5;p=&a;p=a;int*p=a=100;D)intbIO;int*a=b+1;D)inta5int*pl,*p2=a;*pl=*p2;34.假设有定义:intx10=0,1,2,3,4,5,6,7,8,9),*pl;那么数值不为3的表达式是C0A)x3C)pl=x+2,*(pl+)35 .下面程序段的输出是C。B) pl=x+3,*pl+D) pl=x+2,*+plinta=2,4A8,1OJ2,14,

12、16,18,20,22,24),*q4J,k;for(k=01;kdn,q30);A)8B)16C)20D)输出不合法36 .假设要对a进展自增运算,那么a应具有下面说明以A)inta32;B)Char*a=12,ab;C)char(*a)3D)intb10,*a=b;37 .假设有定义inta46;那么能正确表示a数组中任一元素ai数j(i,j均在有效范围内)地址的表达式白。B) &a00+4*j+iD) &a00+6*j+IC) 2 2D) 4 6A)fca00+6*i+jC)&a00+4*i+j38 .下面程序的运行结果是B。main()intx5=2,4,6,8,10),*p,*pp;

13、p=x,pp=&p;Printf(%d”,*(p+);Printf(3d”,*pp);)A)44B)2439 .假设有定义intx43=1,2,3,456,7,8,9,10,11,12);int(*p)3=x;那么能够正确表示数组元素xl的表达式是匕A)*(*p+l)2)B)(*p+l)+2C)*(*(p+5)D)*(*(p+l)+2)40.假设有说明:char*language=ttFORTRANw/BASICzPASCAL,JAVAC;那么language2的值是BeA) 一个字符B)一个地址C)一个字符串D)一个不定值41.设有定义:char*cc2=“1234”,“5678”;那么正确

14、的表达是A)CC数组的两个元素中各自存放了字符串1234”和“5678”的首地址B) cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C) CC是指针变量,它指向含有两个数组元素的字符型一维数组D) CC元素的值分别维“1234和“5678”42 .己有定义int(*p)();指针P可以BoA)代表函数的返回值B)指向函数的入口地址C)表示函数的类型D)表示函数返回值的类型43 .己有函数max(a,b),为了让函数指针变量P指向函数max,正确的赋值方法是A)p=max;B)p=max(a,b);C)*p=max;D)*p=max(a,b);44 .假设有函数max(a,b)

15、,并且已使函数指针变量P指向函数max,当调用该函数时,正确的调用方法是L或p(a,b)A)(*p)max(a,b)B)*pmax(a,b);C)(*p)(a,b);D)*p(a,b);45 .以下正确的表达是工。A) C语言允许main函数带形参,且形参个数和形参名均可由用户指定B) C语言允许main函数带形参,形参名只能是argc和argvC)当main函数带有形参时,传给形参的值只能从命令行中得到D)假设有说明:intmain(intargc,char*argv),那么argc的值必须大于1.程序阅读题1.写出下面程序的运行结果。5func(char*s,chara,intn)i11t

16、j;*s=a;j=n;while(*ssj)j-;returnj;1main()2 charc6;inti;for(i=1;i=5;i+)*(c+l)=,A,+i+1;printf(u%dnvJunc(cE,5);34 .写出下面程序的运行结果。6fun(char*s)char*p=s;while(*p)p+;return(p-s);1main()char*a=z,abcde;Printf(dn”,fun(a);15 .写出下面程序的运行结果。abcdefglkjihsub(char*a,inttl,intt2)charch;while(tlt2)ch=*(a+tl);*(a+tl)=*(a+

17、t2);*(a+t2)=ch;tl+;t2;main()chars!2;inti;for(i=0;i12;i+)si=,A,+i+32;sub(s,7J1);for(i=0;i12;i+)PrinIf(c”,si);Printf(n”);19765314.当运行以下程序时,写出输入6/的程序运行结果。sub(char*a,charb)while(*(a+)!=,0,);while(*(a-l)=0;j-)Printf(sn”,*(p);)四.程序填空题1.下面函数的功能是从输入的十个字符串中找出最长的那个串,请填(2)空使程序完整。voidfun(charstr1081J,char*sp)i1

18、1ti;*sp=【IstrIOl:for(i=l;i10;i+)if(strlen(*sp)strlen(stri)2*sp=stril);)2.下面函数的功能是将一个整数字符串转换为一个整数,例如:7234”转换为1234,请填(3)空使程序完整。intchnum(char*p)(intnum=0,kJen,j;Ien=strlen(p);for(;*p!=0,;p+)k=(2*p-t0,l;j=(-Ien);while(【3i!=0)k=k*10;num=num+k;)return(num);)3.下面函数的功能使统计子串substr在母串str中出现的次数,请填(3)空使程序完整。int

19、count(char*str,char*substr)intij,k,num=0;for(i=0;lstril!=,O,J;i+)for(2j=i,k=0;substrk=strj;k+;j+)if(substr3k=,0,)num+;break;return(num);)6.下面函数的功能是将两个字符串si和s2连接起来,请填空使程序完整。voidconj(char*sLchar*s2)(while(*sl)1s1+;while(*s2)*sl=2*s2;sl+,s2+;)*sl=,0,;1五.编程题1 .定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出。2 .输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:输入10个数;进展处理;输出10个数。所有函数的参数均用指针。3 .编写一个求字符串的函数(参数用指针),在主函数中输入字符串,并输出其长度。4 .编写一个函数(参数用指针)将一个3X3矩阵转置。5 .写函数原型为intstrcmp(char*sl,char*s2);的函数,该函数实现两个字符串的比较(函数功能描述参见教材P137,strcmp字符串处理函数)。6 .利用指向行的指针变量求5义3数组各行元素之和。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号