已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+ 复习资料 南昌大学计算中心 海天工作室C+复习资料一、 选择题1、若X是一个bool型变量,则X&53的值(B ) A、为true B、为false C、与X的值相同 D、与X的值相反2、设a=6,执行语句 a+=4; 得到a的值为(D ) A、6 B、12C、18 D、103、字符串”student”占用(D )个字节的空间。 A、7B、6 C、5D、84、二维数组int b4=1,2,1,2,3,1,2,3,4的元素个数为(A ) A、12 B、3 C、4 D、75、下列哪个不是用于实现循环结构的语句(B ) A、while B、if C、do while D、for6、下列表达式为真的是(B ) A、5=6 C、(7= =9)&(40) D、(10!=2+8)|(53)7、设x=5,执行语句if(x0) coutx;的输出结果为(C ) A、5 B、x C、无输出 D、08、执行语句k=30;j=k+;后k和j的值分别为(C ) A、k=30,j=30 B、k=30,j=31 C、k=31,j=30 D、k=31,j=319、表达式7%3+5*9-10/2的结果为(D ) A、42 B、43C、40 D、4110、执行cout520endl”520”;屏幕上显示的是(D ) A、520endl”520” B、520endl520 C、520 D、 520 “520” 52011、下列数据属于字符型的是:(C ) A、123 B、true C、c D、10.512、该for循环语句:for(i=1;iy) z=1; else z=3; 要得到z=3的结果,满足条件的一组数是(D ) A、x=1,y=2B、x=1,y=0 C、x=2,y=1 D、x=2,y=314下面是关于构造函数的说法,不正确的是( A )。 A. C+规定,每一个类必须有一个构造函数,没有构造函数就不能创建对象 B. 如果没有提供一个类的构造函数(一个都未提供),则C+提供一个默认的构造函数,该默认构造函数是个无参构造函数,它仅仅负责创建对象 C. 虽然一个类定义了一个构造函数(不一定是无参构造函数),C+仍然提供默认的构造函数 D. 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的15在下列说法中,不正确的是( B )。 A. 静态成员函数不能利用this指针 B. 只有非静态成员才可以使用this关键字,因为静态成员没有this指针 C.析构函数不接受任何参数,也不带有任何类型的返回值 D. 虚机制在构造函数和析构函数中仍然可以很好地工作,以实现多态性16声明类test的拷贝构造函数的正确形式是( D )。 A. int test B. void test C. test(void) D. test(test&) 17一个const对象( B )。 A. 能访问所有成员函数 B. 只能访问const成员函数C. 也能访问volatile成员函数 D. 能访问const和volatile成员函数18下面关于类的对象性质的描述,正确的是( D )。 A. 对象之间不可以相互赋值 B. 不可以说明指向对象的指针 C. 对象不能用作数组元素 D. 一个对象能用作另一个对象的成员19、C+源程序文件的扩展名为(A ) A、.CPP B、.C C、.DLL D、.EXE20、下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? ( C )A、int BC(int a, int b) B、 void BC(int a, char b) C、float BC(int a, int b, int c = 0) D、 void BC(int a, int b=0) ?21 .如果a=1,b=2,c=3,d=4,则条件表达式“ab?a:cd?c:d ” 的值为(D )A. 3 B. 2 C. 1 D. 422. 在int a3=1,3,2,4,5,6,0中,a22的值是( C)A3 B。 2 C。6 D。4?23. 已知 char c; char * const pc=asdf,( B )是正确的。Apc=dfghB*pc=bC*pc+=yDpc=&c24. 执行下列语句后的输出结果是(C)。int hot=100;int &rad=hot;hot+=100;coutradendl; A0; B。100; C200; D。300;25. 下列对结构及其变量定义错误的是:(D )Astruct MyStruct B。struct MyStruct int num; int num; char ch; char ch; ; my;MyStruct my; C struct D。 struct int num; int num; char ch; char ch; ;my; struct my; 26.下列关于指针运算的描述错误的是:(A )A在一定条件下,两个指针可以相加 B在一定条件下,两个指针可以进行关系运算 C在一定条件下,指针可以为空 D在一定条件下,两个指针可以相互赋值27.在C+语言中,对函数参数默认值描述正确的是:( D) A函数参数的默认值只能设定一个 B一个函数的参数若有多个,则参数默认值的设定可以不连续 C函数参数必须设定默认值 D在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值28. 不能作为函数重载判断依据的是:(D ) A参数个数 B。参数类型 C。函数名字 D。返回类型29. 以下程序的输出结果是:(B ) #include void prt(int *x,int *y,int *z) cout+*x,+*y,*z+endl; int a=10,c=20,b=40; void main() prt(&a,&b,&c); prt(&a,&b,&c); A 11,42,31 B。11,41,20 C。11,21,40 D。11,41,21 12,21,41 12,42,20 11,21,41 12,42,22?30.以下程序的输出结果是:(D ) #include void func(char *m) +m; cout*mendl; void main() static char *a=morning, afternoon, evening; char *p; p=a; func(p); A字符o的起始地址 B。字符a的起始地址 C字符o D。afernoon31.以下程序的输出结果是:(D ) #include int fun(char *s) char *p=s; while (*p!=0) p+; return (p-s); void main() coutfun(abc)endl; A0 B。1 C。2 D。332. 不正确的标识符是(B) A._a2 B.2ai C.a2_i D.INt 33. 在 ( C ) 情况下适宜采用 inline 定义内联函数。 A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用 34. 通过 ( A ) 调用虚函数时,采用动态绑定(binding)。 A. 对象指针 B. 对象名 C. 成员名限定 D. 派生类名 35. 假定一个类的构造函数为 A(int aa,int bb)a=aa+;b=a*bb+; ,则执行 Ax(4,5); 语句后, x.a 和 x.b 的值分别为 ( C ) 。 A. 4 和 5 B. 5 和 4 C. 4 和 20 D. 20 和 5 36. 在 C+ 中有以下 4 条语句: static int hot=200;int &rad=hot;hot=hot+100;coutradc&b=c的值是(C )。 A. 2 B. -1 C. 0 D. 1 50. 设int x = 1,2,3,4,5,6,* p = x;则值为3的表达式是 (B) A. p + = 2, * + + p B. p + = 2, * p + + C. p + = 3, * p D. p + = 2, + + * p51. 关于类概念的描述中,( D )是错误的。A类是抽象数据类型的实现; B类是具有共同行为的若干对象的统一描述体;C类是创建对象的样板; D类不是C中的一种数据类型;52. 在32位机中,double型字宽为( D )字节。A2; B4;C 6; D853. 在int a3=1,0,3,2,4,5,6,0;中a22的值是(C)。A0; B5; C6; D254. 对于double (*p)10;的描述,( A )是正确的。A. p是一个指向数组的指针,所指向的数组是10个double型元素;B. p是一个指向某个数组中第10个元素的指针,该元素是double型变量;C. p5表示某个数组的第10个元素的值;D. p是一个具有10个元素的指针数组,每个元素是一个double型指针;55. 下述关于开关语句的描述中,( A )是正确的。A. 开关语句中default子句可以没有,也可以有一个;B. 开关语句中每个语句序列中必须有break语句;C. 开关语句中default子句只能放在最后;D. 开关语句中case子句后面的表达式可以是整形表达式。56. 下列( D)是引用调用;A形参是指针,实参是地址值; B形参和实参都是变量;C形参是数组名,实参是数组名; D形参是引用,实参是变量。57. ( A )是析构函数的特征。A. 一个类中只能定义一个析构函数; B. 析构函数与类名不同;C. 析构函数的定义只能在类体内; D. 析构函数可以有各个或多个参数。;58.关于new运算符的下列描述中,( D )是错的。A. 它可以用来动态创建对象和对象数组;B. 使用它创建的对象或对象数组可以使用运算符delete删除;C. 使用它创建对象时要调用构造函数;D. 使用它创建对象数组时必须指定初始值。 59.已知fun(int)是类Test的公有成员函数,p是指向成员函数fun()的指针,采用( D )是正确的:Ap=fun; Bp=Test:fun(); Cp=fun(); Dp=Test:fun;60. 关于对象概念的描述中,(A )是错误的。A. 对象就是C语言中的结构变量;B. 对象代表着正在创建的系统中的一个实体;C. 对象是一个状态和操作(或方法)的封装体;D. 对象之间的信息传递是通过消息进行的;61. 下列给字符数组进行初始化中,( A )是正确的。 A. char s1 =12345abcd; B. char s23=xyz; C. char s33= a, x, y; D. char s423=xyz,mnp;62. 对于int *pa5;的描述,( D )是正确的。A. pa是一个指向数组的指针,所指向的数组是5个int型元素;B. pa是一个指向某个数组中第5个元素的指针,该元素是int型变量;C. pa5表示某个数组的第5个元素的值;D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针;63. 下述静态数据成员的特征中,( D )是错误的。A. 说明静态数据成员时前边要加修饰符static;B. 静态数据成员要在类体外进行初始化;C. 引用静态数据成员时,要在静态数据成员名前加和作用域运算符;D. 静态数据成员不是所有对象所共用的。64、下列的各类函数中,( C )不是类的成员函数。A. 构造函数; B. 析构函数; C . 友元函数;D. 拷贝构造函数;二、 填空题1、一个基本语句的最后一个字符是(; ).2、与int x=100; while(x0) cout0;x-) )。3、执行for(int i=1;i30;i+) cout”*”;将输出(29 )个*号。4、数学函数sqrt(49)的结果为(7),pow(3,3)的结果为:(27)。5、C+程序主要有三种基本控制结构,分别是顺序结构、条件分支结构和(循环结构 )。6在c+中,除具有 循环 、 switch 语句的函数不能说明为内联函数外,其它函数都可以说明为内联函数。7在c+中,封装可以由 public 、private 和 protect 等关键字提供。8若example是已定义的类,在程序结束之前,共计存在 2 个对象。#include”example”main()example X(0); X=5;X.print(); X=example(10); X.print();9在c+中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则可以将这个基类说明为 虚基类 。使用关键字 virtual 说明。10静态成员为该类的所有 对象 共享,它们被存储于一个 中。 15 在C语言中,编程的单位是_函数_;在C+语言中,编程的单位是_对象_。 16 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 _数据成员_,共同行为被描述为类中的_函数成员_。 17 类的具体表现是通过定义_成员函数_来操作的。 18 对类中的成员函数和属性的访问是通过_public_、_private_和_protect_这3 个关键字来控制的。 19 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为_private_权 限,而把成员函数(方法)定义为_public_权限。 20) 在类定义中,数据和成员函数默认权限是_private_。 21 类中构造函数有_一个或多_个,析构函数有_一_个。 22 类中的构造函数是一个特殊的成员函数,它由类的对象_生成时_调用,它的作用 是_初始化_。 23 在定义类的对象时,C+程序将自动调用该对象的_构造函数_函数初始化对象自身。 24 在撤销类的对象时,C+程序将自动调用该对象的_析构_函数。 25 _new_运算符对指定类型对象动态分配内存并返回_true 或false_。 26 _delete_运算符删除(25)题中的运算符所动态分配的内存空间。 27 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造 函数形式为_ MyClass();_。 28 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构 函数形式为_MyClass();_。 29 在类中定义和实现的函数称为_内联函数_。 30 非成员函数应声明为类的_友元函数(friend)_才能访问这个类的private成员。 31 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入 语句_friend FriendClass;_。 32 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass 的定义中加入语句_ friend FriendFunction(); _。 33 下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。 class MyClass public: enum Week Sun,Mon,Tue,Wed,Thur,Fri,Sat ; Week week; void fun(MyClass &my) _my.week_= _wed_; /将对象my的week赋值为所定义的枚举类型 /值为3的枚举量 34 在下面程序的横线处填上适当的语句,使该程序执行结果为10。 #include class MyClass public: _void setx(int a)x=a;_或_ MyClass(int x)this.x=x;_ /为x置值 _int getx()return x;_ /取x值 private: int x; ; void main() MyClass my(10); cout my.GetNum() endl; 35 完成下面的类定义。 class MyClass public: MyClass( ) x = 0; _friend_ int GetNum(_MyClass _ my); private: int x; ; int GetNum(_ MyClass _ my) return my.x; 1在C+中,函数的参数有两种传递方式,它们是值传递和 引用传递 。2当一个成员函数被调用时,该成员函数的this指针 指向调用它的对象。3在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 作用域说明符 ,对此数据成员的访问将出现歧义。4拷贝构造函数使用 & 作为参数初始化创建中的对象。5在公有继承的情况下,基类数据成员在派生类中的访问权限 不变 。6描述命题A小于B或小于C的表达式为 AB| Ac&b=c的值是 false 。11面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。12在C+中,定义重载函数时,应至少使重载函数的参数个数或参数类型; 13构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个。16在C+类中,const关键字可以修饰对象和成员函数,const对象不能 被更新 ,const成员函数不能 更新对象的数据成员 。17举出C+中两种用户自定义的数据类型:结构体、枚举类型。18C+中没有字符串类型,字符串是通过 数组 来表示的,每一个字符串都有一个结尾字符 0 。19C+中没有输入输出语句,输入输出是通过 流操作 实现的,写出一条打印整型变量n的输出语句:coutn; 。20、在语句 int a10; 中,10的含义是数组的大小为10 。21、在函数中有这样的语句来申请空间:int *p=new int10;要释放该空间应使用语句: delete p 。22、函数重载的条件是函数名相同,参数的个数或形参类型不同 。23、对于类中的非静态函数成员,都包含一个默认的指针this,它代表 正在被成员函数操作的对象 。24、已知变量x的值是3,则表达式x+=3,x+,x+2的值是 9 。25、类X的静态整型数据成员i的初值是10,定义的方法是 static int i=10; 。26、结构数据成员的默认访问权限是 pirvate 。27、要使语句p=new double125;能够正常执行,变量p的定义应为 double *p。28、语句char c20=Good morning; c4=0; coutc;的执行结果是 Good 。三、 程序填空1、以下程序实现求1100这100个整数的和的运算。#include void main( ) int i ,sum; sum=0;for(i=1;i100 ;i+ )sum+=i ;cout”sum=”sum;2、以下程序实现从键盘输入两个整数a和b,输出其中大者的功能(不考虑相等的情况)#include void main( )int a,b ; cinab; if( ab) cout”最大值为:”a; else cout”最大值为:”b;3.设有一函数,其代码如下:int power (x,n) int i,p; for (p=1,i=1; i0; _n-_)p=p*x; return (p);4.本程序用古典的Eratosthenes的筛法求从2起到指定范围内的素数。如果要找出2至10中的素数,开始时筛中有2到10的数,然后取走筛中的最小的数2,宣布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9:重复上述步骤,再取走最小数3,宣布它为素数,并取走3的倍数,于是留下5、7。反复重复上述步骤,直 至筛中为空时,工作结束,求得2至10中的全部素数。程序中用数组sieve表示筛子,数组元素sievei的值为1时,表示数i在筛子中,值为-1时表示数i已被取走。#include const int MAX=22500;void main() unsigned int i , range , factor , k ; int sieveMAX ; coutrange; /*range指出在多大的范围内寻找素数 */ for (i=2 ; i=range ; i+) /* 筛子初始化 */ sievei=1; factor=2 ; while (factor=range) if (sievefactor=1 ) /*筛子最小数是素数 */ coutfactor t; k=factor; while (ky) z=x; s=a+b; else z=y; cout”s=”s; cout”z=”z;输出结果为:s=47 输出结果为:z=73、int x=6; 4、int x;while(x+5) for(x=1;x10;x+)cout”good”; if(x%3= =0)cout“thats the end”; cout5) for(i=0;i8;i+) if(n11) cout”right!”; datai=i;else cout=0;i-)else cout”center!”; coutdatai;输出结果为:left 输出结果为:765432101、#include void main() int a,b,c,; c=2,c+=10;a = 10;b=11; a * = 2; b / = 2; c % = 2; couta,b,cendl;输出结果:20,5,02、#include void main() int a = 50 , b(0) ; b = +a; couta,bendl; b = a+;couta,bendl;输出结果:51,5152,515、#include void main() int i; for(i=4 ; i=10 ; i+ ) if (i%3= =0) continue; couti; 输出结果:4578106.分析以下程序执行结果#includeint add(int x,int y)return x+y;double add(double x,double y)return x+y;void main()int a=4,b=6;double c=2.6,d=7.4;coutadd(a,b),add(c,d)endl;解:本题说明函数重载的使用方法, 这里有两个add()函数,一个add()函数的参数与返回值为int型,另一个的参数与返回值为double型,它们是根据参数类型自动区分的。所以输出为: 10,107.分析以下程序的执行结果#includeclass Sample int i; double d; public: void setdata(int n)i=n; void setdata(double x)d=x; void disp() couti=i,d=dendl; ;void main()Sample s; s.setdata(10); s.setdata(15.6); s.disp();解: 本题说明重载成员函数的使用方法。setdata()成员函数有两个,根据其参数类型加以区分。所以输出为:i=10, d=15.68.分析以下程序的执行结果#includevoid main()int a; int &b=a; / 变量引用 b=10; couta=aendl;解: 本题说明变量引用的方法。b是a的引用,它们分配相同的空间,b的值即为a的值。所以输出为 a=10。注意:引用是引入了变量或对明的一个 义词,引用不产生对象的副本。9.分析以下程序的执行结果#includeclass Sample int x; public: Sample(); Sample(int a)x=a; Sample(Sample &a)x=a.x+1; void disp()coutx=xendl;void main() Sample s1(2),s2(s1); s2.disp();解: 本题说明类拷贝构造函数的使用方法。Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x值赋给当前对象的x后加1。所以输出为:x=3。10.分析以下程序的执行结果#includevoid swap(int &x,int &y)int temp;temp=x; x=y; y=temp;void main()int x=10,y=20;swap(x,y);coutx=x,y=yendl;解:这里的函数采用引用调用的方式,所以输出为:x=20,y=10注意:在函数调用里,引用调用与传址调用的效果相同,但更加简洁直观。11.分析以下程序的执行结果#includevoid main()int a=10,20,30,40,*pa=a;int *&pb=pa;pb+;cout*paendl;解:pa为数组的指针,首先指向a0,pb是pa的引用,当执行pb+时,也使pa指向了a1,所以输出为:2012.分析以下程序的执行结果#includeclass Sampleint x;public:Sample();Sample(int a)x=a;Sample(Sample &a)x=a.x+ +10;void disp()coutx=xendl;void main()Sample s1(2),s2(s1);s1.disp();s2.disp();解: Sample类的Sample(Sample &a)构造函数是一个拷贝构造函数,将a对象的x增1然后加上10后赋给当前对象的x,由于a是引用对象,所以输出为: x=3 / +运算的结果 x=12 / 2+1013.写出下列程序的运行结果。 #include int f(int a) return +a; int g(int& a) return +a; void main() int m=0,n=0; m+=f(g(m); n+=f(f(n); coutm=mendl; coutn=nendl; 程序输出结果为:m=3 n=214. 写出下列程序的运行结果。#include void main() struct numint x; int y; sa = 2, 32, 8, 16, 4, 48;struct num *p = sa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南省重点学校初一新生入学分班考试试题及答案
- 2026年保密基础知识题库试题附答案
- 公司文员年终工作总结(资料15篇)
- 人教版(部编版)初中语文七年级下册 2 说和做-记闻一多先生言行片段 教案2
- 第3课 制作Vista风格光束壁纸教学设计初中信息技术(信息科技)九年级下册黔教版
- 2026年游戏机合作合同(1篇)
- 第三课 美丽的图形-图形元件的创建教学设计初中信息技术浙教版广西 宁波八年级下册-浙教版广西 宁波
- 中国肝细胞癌合并门静脉癌栓诊疗指南重点2026
- 初中语文梦回繁华教案及反思
- 高中物理人教版 (新课标)必修12 实验:探究加速度与力、质量的关系教学设计
- 宿迁市离婚协议书
- 六年级下册数学一二单元练习题
- 苏科版三年级劳动下册第06课《陀螺》公开课课件
- 第七章中子的防护详解
- JJF 2020-2022加油站油气回收系统检测技术规范
- GB/T 19216.21-2003在火焰条件下电缆或光缆的线路完整性试验第21部分:试验步骤和要求-额定电压0.6/1.0kV及以下电缆
- GB 29415-2013耐火电缆槽盒
- 劳动技术教育家政 家庭理财技巧课件
- 化学废物处理台账
- Unit8Lesson1RootsandShoots课件-高中英语北师大版(2019)必修第三册
- 新sws-5000系列各模式概念.等多个文件-机器上机培训
评论
0/150
提交评论