C++程序设计复习题及参考答案_第1页
C++程序设计复习题及参考答案_第2页
C++程序设计复习题及参考答案_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1514一、选择题:

中南大学网络教育课程考试复习题及参考答案C++程序设计下列标识符作为变量名称,合法的是 [B]goto B.Student C.123 D.设x和y均为int型,则x&&y为真的条件是 [DA.其中一个为0 其中一个为非0C.它们均为0 它们均为非0存储以下数据,占用存储字节最多的是 [ A]A.0 B.’0’ C.”0” D.inta,b;charm,n;cin>>a>>b>>m>>n;则下列输入数据的方式中正确的是 [C]A.10,20,X,Y B.1020XY C.1020XY D.20、XY下列for循环的次数为 [B ]for(intI=0,x=0;!x&&I<=5;I++)5 B.6 C.1 若有定义为int*r=newint[10],则释放指针所指内存空间的操作是 [A]delete[]r; B.delete*r C.deleter; D.deleter[];有函数原型声明语“inttest(inta,intb=1,intc=0)在以下函数调用语句中不合法的[ CA.test(0); B.test(0,0); C.test(); D.test(0,0,0);选择出合法的if语设有intx,a,b,c;) [A ]A.if(a==b)x++; B.if(a=<b)C.if(a<>b)x++; D.if(a=>b)9.声明或定义一个内联函数时,必须在函数开始使用保留字 [D ]static B.const C.extern D.inline10.在下面的函数声明中,存在着语法错误的是 [D ]A.BC(inta,int); B.BC(int,int);C.BC(int,int=5); D.BC(intx;inty);11.将两个字符串连接起来组成一个字符串时,选用的函数是 [C ]A.strlen() B.strcpy() C.strcat() D.strcmp()12.在程序中,预处理命令开头的字符都是 [B ]A.* B.# C.& D.@charstr[20]cin>>strThisisaprogram的结果是str=[B ]Thisisaprogram B.ThisC.Thisis D.hisisa在下面的do循环语句中其循环体被执行的次数为 [A inti=0;do{i++;}while(i*i<10);A.4 B.3 C.5 D.2在下面的一维数组定义中,有语法错误的语句是 [C A.inta[]={1,2,3}; B.inta[10]={0};C.inta[]; D.inta[5];下面的保留字中,不能作为函数的返回类型 [C ]void B.int C.new D.long下面的函数声明中voidBC(inta,intb)”的重载函数是 [B ]intBC(intx,inty); B.voidBC(inta,charb);C.floatBC(inta,intb,intc=0); D.intBC(inta,intb=0);假定AB为一个类则该类的复制构造函数的声明语句为 [D ]AB&(ABx); B.AB(ABx); C.AB(AB*x); D.AB(AB&);C++程序的基本功能模块为 [D ]表达式 B.标识符 C.语句 D.函数template<classT>Tadd(Tx,Ty){returnx+y;add函数的调用不正确的是 [C]A.add<>(1,2) B.add<int>(1,2) C.add(1.0,2) D.add(1.0,2.0)在下面的一维数组定义中,有语法错误的是 [C A.inta[]={1,2,3} B.inta[10]={0}C.inta[] D.inta[5]C++语言中的每条简单语句是以哪个符号作为结束符的 [A A.分号 逗号 空格 换行符设“intf(int);”和“intg(int);”是函数f和g的原形,以下将f作为语句调用的[B A.g(f(3)) B.f(g(3)) C.g(f(3)+2) D.A.X::X(参数),X::~X()B.voidC.X::X(参数),X::~X(参数)A.X::X(参数),X::~X()B.voidC.X::X(参数),X::~X(参数)D.voidX::X(参数),voidX::~X(参数)在下列double型常量表示中,错误的是 [A ]A.E15 B.35 C.3E5 D.3E-5下列各运算符中,优先级最低的是 [A ]A.?: B.| C.|| D.!=下列定义中,定义指向数组的指针p的是 [B A.int*p[5] B.int(*p)[5] C.(int*)p[5] D.int*p[设有以下定义:voidf1(int*m,long&n);inta;longb;则以下调用合法的是 [B ]A.f1(a,b) C.D.f1(&a,&b)下列各类变量中,不是局部变量的是 [D ]registerintx B.voidf(intw)C.intz; D.staticint已知pAm是类Am5,()正确的语句是 [C ]A.A1.p=5 B.A1->p=5 C.A.*p=5; D.*A1.p=5;已知i=5,j=0,下列各式中运算结果为j!=6的表达式是 [B A.j=i+(++j) C.j=++i+j D.j=j+++i假定pfloatp+1p个 字 节[C ]A.1 B.2 C.4 D.8在下面的字符数组定义中,有语法错误的语句是 [D ]chara[20]="abcdefg"; B.chara[]="x+y=55.";C.chara[15]={'1','2'}; D.chara[10]='5';若用数组名作为函数调用的实参,传递给形参的是 [A A.数组的首地址 数组中第一个元素的值C.数组全部元素的值 数组元素的个数假定AB为一个,则执行语句自动调用该类构造函数的次数为[A A.6 B.7 C.9 D.11当使用fstream流类定义一个流对象,并打开一个磁盘文件时,文件的隐含打开方式为 [D ]ios::in B.ios::outC.ios::in|ios::out D.二、填空题:若acout向屏幕输出数组a中所存字符串的语句为cout<<a;。若要把一个整型指针p转换为字符指针,则采用的强制转换表达式(char*)p 。C++语言中,一个函数由函数头和函数体假定p(*p)+*p

组成。,然后使p的值增1。5.假定对二维数组a[3][4]进行初始化的数据{{2,5,6},{2,8},{7}},则a[1][1]被初始化为8 。设px指向一个类的动态分配的对象则执“deletepx语句时将自动调用该类的析构函数 。'A'~'ZASCII65~90charch=14*4+12;cout<<ch;得到的输出结果为D 。表达式x=x+1++x。一个指针指向一个Data类对象,它保存着该对象的地址

,相应的指针类型为Data类。若do循环的“尾”为while(++i<10,并且i的初值为,同时在循环体中不会修改i的值,则环体将被重复执行10 次后正常结束。假定用户没有给一个名为AB的类定义构造函数,则系统为其隐含定义的构造函数为 AB(){} 。_breakswitchC++语言中每条复合语句{(或左花括) 作为开始符。strlen("apple")的值为5 。执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的case标号位置起向下执行,当碰到下一个标号位置时

不停止

执行。假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值_25 。假定要动态分配一个类型为Worker的具有n个元素的数组,并由rWorker*r=_new。classBox{„};voidmain(){BoxA,B,C;}该程序运行时,分别调用构造函数和析构函数 3 次。执行以下语句后:cout<<char('A'+4);得到的输出结果E 。一个二维字符数组a[10][20]能够存储10个字符串,每个字符串的字符长度至多为19 。关系表达式x+y>5

。 1假设在程序中a、bc均被定义成整型,所赋值都大于1,abc的表达式是1.0/a/b/c1.0/(a*b*c)(不使用强制类型转换。假定a是一个一维数组,则a[i]的指针访问方式为 *(a+i)。对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的 函数体实现。若需要定义一个标识符常量并且使C++能够进行类型检查则应在定义语句的开始使用保留 const。每个字符指针变量占用内4个字节。利用“对象.成员变量”形式访问的对象成员仅限于被声明为 public的成员。对于在所有函数定义之外定义的变量,若没有被初始化则系统隐含对它赋予的初值为 。在C++程序中包含一个头文件或程序文件的预编译命令。假定一维数组的定义为inta[8],则该数组所含元素的个数_8 。当使用 void留字作为函数类型时,该函数不返回任何值。表达式x=x+y表示成复合赋值表达式。当程序中执行到 continue语句时,将结束所在循环语句中循环体的一次执行。对一个二维字符数组a”},则a[1]元素对应的字符串为 456。若要把一个字符指针p转换为整型指针,则采用的强制转换表达式(int。类test的析构函数名是 ~test(。三、判断题:1.C++中,以分号分隔的语句单元称为语句。[√]2.C++规定else可与在其之前未配对的任意if配对。[]3.若S表示一条C+while(1)S必定是无限循环。4.如果(x==y),则(&x==&y)。[]]5.在成员函数中访问对象的数据成员时,可以直接用数据成员名,而在友元函数中访问对象的数据成员时,必须指明是哪个对象的数据成员。]控制格式输入输出的操作子oct不是设置域宽的。 ]在C+中0127是一个合法的整数,最高位的0实际上是不必要,其值就是127。 ]如果x是一个整型变量则语“int*p=new是正确的。 ]若函数声明语句double*f(),则该函数的返回值为实型指针。 √ ]引进虚基类的真正目的是为了解决二义性问题。 ]若类A是类B的友元类,且类B是类C的友元类,则类A也是类C的友元类。 ]12.对于ofstream类对象file,feof成员函数的返回值为真表示打开文件失败。 ]13.变量在使用之前必须声(或定义。 14.'\n''\x6A''\101'均是C++的字符常量。 ]15.逻辑运算符都是双目运算符,且优先级相同。 [ ]16.如则(*x==*y)。 ]函数体内声明的静态变量至多只会被初始化一次。 ]多继承情况下,派生类的构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序,而与派生类构造函数中所定义的成员初始化列表的各项顺序无关。 19.C++提供了3种基本控制结构顺序结构分支结构和循环结构。 20字符串型数据是指'括起来的一串字符。 ]21.引用就是某个变量的别名,对引用的操作,实质上就是对被引用的变量的操作。 ]22一个数组中的所有元素具有相同的数据类型。 ]constchar*p说明了p是指向字符串的常量指针。 ]模板定义中的类型参数可以用作局部变量、函数参数、函数返回值、数据成员等的数据类型[√ ]C++中变量要求严格区分大小写。 ]26.表达式9!=10的值为。 ]语句“charc='c';charp=&c;”是错误的。 ]在一个被调用函数中一个return语句可返回多个值给调用函数。 ]静态成员变量是整个类的所有对象共用的。 ]write函数只能按规定向文件写入所指定的字符数。 ]每一个C++程序可以有多个源文件但是只能有一个main函数。 ]在说明语句a(15),&b=a,中的值*p的值是相等的。 ]在不同类型操作数组成的表达式中,其表达式的类型一定是最高类型double型。 ]for循环中循环变量的作用域是该循环的循环体内。 ]在传值调用中,要求实参与形参的类型完全一致并且个数相等。 ]类中所提供的成员函数可以直接访问私有成员。 ]四、写出程序的运行结果:1.#includevoidmain(){inta,b,c,d(5);c=2,c+=10;a=b=10;a*=2;b/=2;c%=2;cout<<a<<","<<b<<","<<c<<endl;}运行结果:20,5,02.#include<iostream.h>voidmain(){charflag='c';switch(flag){case'a':cout<<"1"<<endl;case'b':cout<<"2"<<endl;case'c':cout<<"3"<<endl;default:cout<<"4"<<endl;break;}}运行结果:343.#include<iostream.h>voidmain(){staticintb[][3]={{1,2,3},{4},{5,6}};b[0][2]=12,b[1][2]=18;cout<<**b<<"\t"<<**(b+1)<<"\t"<<**(b+1)<<"\t"<<*(*(b+1)+2)<<"\n";cout<<b[0][2]+b[1][2]+b[2][2]<<endl;}运行结:1 4 4 18304.#include<iostream.h>voidmain(){intx=5,y=8,z=9,v;if(x>y)v=x;elsev=y;if(v<z)v=z;cout<<"v="<<v<<endl;}运行结果:v=95.#include<iostream.h>voidmain(){inti(0);while(++i){if(i==10)break;if(i%3!=1)continue;cout<<i<<endl;}}运行结果:1476.#include<iostream.h>voidff(intx){ cout<<"ff(int):"<<x<<endl;voidff(doublex){ cout<<"ff(double):voidmain(){floata(88.18);ff(a);charff(b);}运行结果:ff(double):88.18ff(int):97。7.#include<iostream.h>voidmain(){for(inti=1;i<=5;i++){for(intj=1;j<=5-i;cout<<"";for(j=1;j<=2*i-1;cout<<"#";cout<<endl;}}:########################8.#include<iostream.h>inta[6]={1,2,3,4,5};voidfun(intb[],intn);voidmain(){intm=6;fun(a,m);cout<<a[5]<<endl;}voidfun(intb[],intn){for(intI=0;I<n-1;I++)b[5]+=b[I];}运行结果:159.#includeclassA{public:A(){cout<<"1";}~A(){cout<<"2";}};classB:publicA{public:B(){cout<<"3";}~B(){cout<<"4";}};voidmain(){Bb;}运行结果:134210.#includeintf(intx){inty;if(x<=-1)y=x-1;if(x>-1&&y=2*x;if(2<x&&y=x*(x+2);returny;}voidmain(){cout<<f(5)<<""<<f(-5)<<endl;}运行结果:35-611.#include<iostream.h>constintn=5;voidmain(){inta[n][n]={{3,2,4,1,5},{8,7,2,5,6},{6,9,1,4,3},{5,5,3,6,2},{2,8,1,8,6}};ints=0;for(inti=0;i<n;i++)s+=a[i][i]+a[i][n-i-1];if(n%2==1)s-=a[n/2][n/2];cout<<s;}运行结果:4012.#includeclasss{intpublic:voidsetij(inta,intb){i=a,j=b;}~s(){cout<<"析构.."<<i<<endl;}intGetMul(){returni*j;}};voidmain(){s*p;p=news[3];for(intj=0;j<3;j++)p[j].setij(j,j); //jk=0;k<3;k++)cout<<"积["<<k<<"]="<<p[k].GetMul()<<endl;delete[]p;}运行结果:积[0]=0积[1]=1积[2]=4析构..2析构..1析构..013.#include<iostream.h>voidmain(){inta=10,*q;if(q==NULL)cout<<"####"<<endl;elseq=&a;cout<<*q<<endl;}运行结果:1014.#include<iostream.h>voidmain(){inti,a[10],p[3],k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;i<3;i++)p[i]=a[i*(i+1)];for(i=0;i<3;i++)k=k+p[i]*2;cout<<k<<endl;}运行结果:2115.#include<iostream.h>classAB{inta;public:AB(intaa=0){a=aa;}~AB(){cout<<"析构AB!"<<a<<endl;}};classB:publicAB{intb;public:B(intaa=0,intbb=0):AB(aa){b=bb;}~B(){cout<<"析构B!"<<b<<endl;}};voidmain(){Bx(5),y(6,7);}析构B!7析构B!0AB!516.#include<iostream.h>voidmain(){floatx=1.5,y=2.5,z;floatpx=&x;py=&y;z=*px+*py;cout<<"x="<<*px<<"y="<<*py<<"z="<<z<<'\n';}运行结果:x=1.5y=2.5z=417.#includeintf(inta){intb=0;staticintc=3;b++,c++;return(a+b+c);}voidmain(){inta=2,I;for(I=0;I<3;I++)cout<<f(a)<<endl;}运行结果:78918.#include<iostream.h>classA{intpublic:A(intx){a=newint(x);cout<<"构造"<<*a<<endl;}~A(){deletea;cout<<"析构!"<<endl;}};voidmain(){Ax(3),*p;p=newA(5);deletep;}运行结果:构造3构造5析构!析构!五、完成程序:36,最大公约数12#include<iostream.h>voidmain(){inta,b,s;cout<<cin>>a>>b;intm=a,n=b;while( ①n或){s= ②m% m=n;n=s;}cout<<a<<"与"<<b<<"最大公约数是"<<m<<endl;}回答:①②#include<iostream.h>voidmain(){inta[8]={46,38,72,55,24,63,50,37};intmax=*a,min=*a;for(int*p=a+1;p<a+8;p++){if( )if( )}cout<<max<<''<<min<<endl;}回答:①②完成以下程序,判定某年是否为闰年。判断闰年的条件是,如果年号能被400整除,则该年为闰年;4100#include<iostream.h>voidmain(){longx; //inty;cout<<"输入年号:"; ①cin>>x; if(x%400==0|| ②x%4==0&&x%y=1;elsey=0;cout<<x<<"年"<<(y?"是":"不是")<<"闰年"<<endl;}回答:①②44#include<iostream.h>voidmain(){doublea[4][4]={0},r=1;inti,j;for(i=0;i<4;i++)for(j=0;j<4;j++) ①cin>>a[i][j]; //for(i=0;i<4;i++)for(j=0;j<4;j++)if( )r=r*a[i][j];cout<<"积为:"<<r<<endl;}回答:①②10074#include<iostream.h>voidmain(){inti,j;for(i=0; ①i<=9或;i++){j=i*10+4;if( continue;else}}

cout<<j<<endl;回答:①②有一个数列,它的第一项为5,第二项为810#include<iostream.h>voidmain(){inta[10];a[0]=5; ①a[1]=8; for(inti=2;i<10;i++)a[i]= ②a[i-1]+a[i-2] for(i=0;i<10;i++)cout<<a[i]<<'';cout<<endl;}回答:①②六、程序改错::130成员:10"1-73行的行号,并改正错误。#includeclassS{intpublic:S(){n=10;}S(intnn){n=nn;};voidShow(){};cout<<"成员:"<<n<<"";};voidshows(S&p)//1行{p->Show();}//2行voidmain() //3{ //4Ss1(130),*p=&s1,s2; //5shows(p); //6shows(&s2); //7}错误行的行号改正②p.Show( 错误行的行号改正 错误行的行号改正 301-133行的行号,并改正错误。#includeclassP{intpublic:voidSetn(intval){n=val;}voidShow();};voidP:Show() //1{cout<<n<<'\t';} //2voidmain() //3{ //4Pob[3],*p=ob; //5for(inti=0;i<3;i++) //6ob[i].Setn((i+1)*10); //7行p++; //8p.Show(); //9p=ob[2]; //10p->Show(); //11p=&ob[0]; //12p->Show(); //13}错误行的行号改正②void 错误行的行号改正错误行的行号改正⑥p=&ob[2] ,在第1-14行中存在着3的行号,并改正错误。#include<iostream.h>classA{intpublic:A(intaa[],intnn):n(nn){for(intI=0;I<n;I++)a[I]=aa[I];}intGet(inti){returna[i];}intSumA(intn); //an};intSumA(intn) //1{ //2ints=0; //3for(intj=0;j<n;j++)s=s+a[j]; //4returns; //5} //6voidmain() //7{//8行inta[]={2,5,8,10,15,20},f,d=1;//9行Ax(a,6);//10for(inti=0;i<3;i++)//11d=d*x.Get(i);//12f=SumA(5);//13cout<<"d="<<d<<","<<"f="<<f<<endl;//14行}错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论