




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C++指针》习题学号姓名一、选择题1、有定义如下:inta[5],*p;则下列描述错误的是A.表达式p=p+1是合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的2、函数定义为Fun(int&i),变量定义n=100,则下面调用该函数正确的是CFun(20)B.Fun(20+n)C.Fun(n)D.Fun(&n)3、若有说明intI,j=2,*p=&i;则能完成i=j赋值功能的语句是A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;4、设已有定义char*st="howareyou";下列程序中正确的是chara[11],*p;strcpy(p=a+1,&st[4]);chara[11];strcpy(++a,st);chara[11];strcpy(a,st);chara[],*p;strcpy(p=a[1],st+2);5、设有数组intarray[3][4],下列引用数组元素的方法中错误的是A.array[i][j]B.*(*(array+i)+j)C.*(array[i]+j)D.*(array+i*4+j)6、有定义ints[4]⑸,(*ps”5];ps=s;则对数组s中元素引用的正确的是__CA.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+37、设有说明intb[4][4],以下不能等价表示元素b[3]⑶的是:BA.*&b[3][3]B.(*(*(b+3))+3)C.*(b[3]+3)D.*(*(b+3)+3)8、若有说明"char*s[]={"234","5678","9012","3456","7890"};",则表达式*s[1]>*s[3]比较的是A."1234"和"9012"B.'5'和'3'C.T和9D."5678"和"3456"9、设语句"char*s[]={"Student","Teacher","Father","Mother"},*ps=s[2];"执行语句"cout<<*s[1]<<','<<ps<<','<<*ps<<'\n';",则输出结果是_AA.T,Father,FB.Teacher,F,FatherC.Teacher,Father,FatherD.语法错无输出10、设有以下说明语句:charsl[20]="hello",s2[20]="china";constchar*ptr=s1;以下语句中不符合C++语法规则的语句是DA.strcpy(s2,ptr);B.ptr=s2;C.ptr=ptr+4;D.*ptr=*s2;11、设s和t分别为指向两个长度相同的字符数组的指针,则循环语句while();可以正确实现字符串t到s的完整复制功能。A.*s=*t&&*t!=OB.s++=t++&&*t!=0C.*s++=*t++D.*(++s)=*(++t)12、设有说明:chars1[10],*s2=s1;则以下正确的语句是A.s1[]=”computer”B.s1[10]=”computer”C.s2=”computer”D.*s2=”computer”13、设有说明:inta[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);以下可得数值为9的表达式是BA.p+=3,*p++B.p+=4,*(p++)C.p+=4,*++pD.p+=4,++*p14、设有说明:inta[4][4]={1,2,3,4,5,6,7,8,9,10},*p=a[1],(*q)[4]=a;则以下不能访问数值为7的数组元素的表达式是_AA.*(a+1)+2B.p[2]C.*(a[1]+2)D.q[1][2]二、填空题1、在如下定义中floata[]={100,200,300};float*p[]={&a[0],&a[1],&a[2]};语句cout«*p[2]的输出是3002、若有说明语句char*name="newspaper";则coutvvname+2的输出是wspaper,cout<<*(name+3)的输出是。3、inta[5]={100,200,300,400,500},*p1=&a[0];则表达式(*p1)++的值是100。4、有如下定义中char*str[]={“Followme”,“BASIC”,“GreatWall”,“Department”}中输出”BASIC”字符串的语句是:cout<<str[1]5、执行以下语句:inta[5]={25,14,27,18},*p=a;(*p)++;则*p的值为26,再执行语句:*p++;贝V*p的值为6、设有说明语句chars[]="123\t456\00089",*p=s;执行以下两个语句:coutvv*(p+5)vv'\n';coutvv(p+5)vv'\n';则输出为5和56。7、设有如下函数定义。如果在主函数中有语句coutvvf(“goodbye!”);则输出9intf(char*s){char*p=s;while(*p++);return(p—s);}8、执行以下程序后,y的值是10intmain(){inta[4]={2,4,6};inty=0,*p=a;for(;*p++;)if(*p)y+=*p;cout<<y<<endl;}9、三、程序阅读题1、写出如下程序的运行结果。chars[]="abcdefgh",*p=s;p+=3;cout<<strlen(strcpy(p,"ABCD"))<<endl;//4cout<<s<<endl;//abcABCD
2、写出如下程序的运行结果。char*p="abcdefgh",*r;long*q=(long*)p;q++;r=(char*)q;cout<<r<<endl;//efgh3、写出如下程序的运行结果。voidsub(intx,inty,int*z){*z=y-x;}intmain(){inta,b,c;sub(10,5,&a);sub(7,a,&b);//-5-12-7sub(a,b,&c);cout<<a<<'\t'<<b<<'\t'<<c<<endl;return0;//-5-12-7}4、写出如下程序的运行结果。voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}intmain(){charstr1[100]="abcddfefdbd",c='d';ss(str1,c);cout<<str1<<endl;//abcDDfefDbDreturn0;}5、voidswap(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p;cout<<*p1<<'\t'<<*p2<<endl;}intmain(void){inta=5,b=9;swap(&a,&b);cout<<a<<'\t'<<b<<endl;return0;}程序第一行输出95,第二行输出596、voidexchange(int*x,int*y){inttemp;temp=*x;*x=*y;*y=temp;}voidmain(void){intdata[8]={15,12,20,0,8,-5,17,1};for(inti=0;i<=7;i++){for(intj=i;j<=7;j++){if(data[i]>data[j])exchange(&data[i],&data[j]);}cout<<data[i]<<endl;}}函数exchange的作用是:交换指针变量指向的数,&data[i]表示的是:data[i]的地址,程序的输出结果是:-5018121517207、写出如下程序的输出结果voidinvert(char*a,intx,inty){chart,*p,*q;p=a+x;q=a+y;while(p<q){t=*p;*p=*q;*q=t;p++;q--;}}intmain(){chardt[13]="GoodBookNice";inti=0,n=1;while(i<8){invert(dt,i,i+5);coutvv"第"<<n++vv"次计算:"<<endl;for(intj=i;j<=i+5;j++)cout<<dt[j]<<',';cout<<endl;i+=6;}coutvv"共执行了"vvivv"次计算。"<<endl;return0;}第1次计算:o,B,d,o,o,G,第2次计算:e,c,i,N,k,o,共执行了12次计算8、写出如下程序的运行结果。charch[2][5]={"6934","8254"};char*p[2];inti,j,s=0;for(i=0;iv2;i++)p[i]=ch[i];for(i=0;iv2;i++)for(j=0;p[i][j]>'0'&&p[i][j]v='9';j+=2)s+=10*(p[i][j]-'0');coutvvs;//2209、写出如下程序的运行结果。intsum(intp[],int*w,intn){inti;ints=0,m=0;for(i=0;ivn;i++){s+=p[i];if(p[i]>m){m=p[i];*w=i;}}returns;}intmain(){intaa[3][3]={2,4,8,7,5,3,2,6,9};introw[3],col[3]={0,0,0};
for(inti=0;i<3;i++){row[i]=sum(aa[i],col+i,3);cout<<"row("<<i<<")="<<row[i]<<endl;}for(i=1;i<3;i++){coutvv"第"vvivv"行位置:"vvcol[i]vvendl;}return0;}row(0)=14row(1)=15row(2)=17第1行位置:0第2行位置:210、写出如下程序的运行结果。doublefl(doublex){returnx+x;}doublef2(double(*f)(doublex),inta){intx;doublesum=0;for(x=a;x<=a+1;x++)sum+=f(x)*f(x);returnsum;}intmain().,.,如果去掉A行的continuedoublesum;for(inti=1;i<5;i++){sum=f2(fl,i);cout<<sum<<endl;}}205210016411、以下程序运行后,输出是332语句,则输出343char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a+=s[k]-'0';continue;}//Aif(s[k]){b+=s[k]-'0';a+=s[k]-'0';}}while(s[k]);cout<<k<<'\t'<<a<<'\t'<<b<<'\n';四、程序填空题1、下面程序的功能是:主函数定义了一个整型数组data,从键盘上输入一个数x,调用函数fsum()断该数x是否在数组data中。如果x在数组中,则得到x在data中第一次出现时的下标值p,同时求出下标从0到P之间所有元素之和,函数返回x的下标值p;否则,x不在数组中,函数fsum()返回-1,主函数提示相应信息。主函数输出计算结果。请完善程序。#include<iostream>usingnamespacestd;intfs(int*a,intn,intx,int&sum){sum=0;for(inti=0;i<n;i++){sum=sum+a[i];if(x==a[i])returni;}return-1;}intmain(){intdata[]={12,31,16,28,7,29,35,18,40};intx,s,index;coutvv"请输入要找的数:";cin>>x;index=fs();if()coutvvxvv"不在数组中"<<endl;else{coutvvxvv"是数组中下标为"vvindexvv"的元素。";coutvv"数组中前"vvindexvv"项之和为:"vvsvvendl;}return0;2、下面程序的功能是:从输入的一行字符串中求出最长英文单词长度及最长单词个数,并输出长度和个数,单词之间只能用一个或多个空格隔开。如输入字符串”amastudent"时,最长单词的长度为7,个数为1。而输入字符串"wordbodybooktry”时,最长单词的长度为4,个数为3,即有三个单词均为最长单词。#include<>intlenofLongest(char*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年原乙酸三甲酯合作协议书
- 2025年高效余热回收装置合作协议书
- 农业生产中精准信息技术合作实施协议
- 智能农业解决方案供应与维护协议
- 制造业离职证明及再就业指南(7篇)
- 2025年哈密危运资格证考试题
- 农村耕地长期流转合同书
- 2025年碳酸甲乙酯合作协议书
- 农业技术推广合同
- 别墅建筑工程承包协议
- 蜱虫预防卡通
- 股骨干骨折知识
- 非遗文化产业发展-深度研究
- 2024年认证行业法律法规及认证基础知识答案
- 基于大数据的社区健康监测-深度研究
- 丙酸铬、淀粉酶对黄羽肉鸡生长性能、抗氧化和肠道健康的影响
- 光伏发电新能源课件
- 《无人机电力巡检红外图像分析技术规范》
- 2025年广东省高中学业水平考试综合测评卷(二)政治试题(含解析)
- 老旧小区改造给排水施工方案
- 医院员工保密协议书模板2025年
评论
0/150
提交评论