c++试题和答案(学生)_第1页
c++试题和答案(学生)_第2页
c++试题和答案(学生)_第3页
c++试题和答案(学生)_第4页
c++试题和答案(学生)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、一. 填空1、#include <iostream.h>Using namespace std;int add(int a,int b);int main()int x,y,sum;cout<<"Enter two numbers:"<<'n'/在下画线处填上语句,完成用cin读入x和y cin>>x; cin>>y;sum=add(x,y);cout<<"The sum is:"<<sum<<'n'return 0;int a

2、dd(int a,int b)/在下画线处填上语句,完成计算a与b的和并返回之 return a+b;2、#include <iostream.h>Using namespace std;int main()char name20;cout<<”Hello,your name:”;/在下画线处填上语句,完成将字符串输入到数组name中 cin>>name;/在下画线处填上语句,完成将name数组用cout输出 cout<<name<<endl;return 0;3#include <iostream.h>Using nam

3、espace std;int mul(int x,int y) /mul函数1 return x*y; int mul(int x,int y,int z) /mul函数2 return x*y*z; void main()int a=3,b=4,c=5;/在下画线处填上语句,用于调用mul函数1cout<<a<<'*'<<b<<'='<<mul(a,b)<<endl;/在下画线处填上语句,用于调用mul函数2cout<<a<<'*'<<b

4、<<'*'<<c<<'='<< mul(a,b,c)<<endl; 4#include <iostream.h>Using namespace std;main()int *p; /声明一个整型指针变量p/在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给pp=new int;*p = 10;cout<<*p; /在下画线处填上语句,用于撤销指针p,释放p指向的存储空间delete p;return 0;5#include <iostream.h>m

5、ain()int *p;/在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给pp=new int;if (!p)cout<<"allocation failuren"return 1;/在下画线处填上语句,将p所指向的存储区赋值20*p=20;cout<<*p;/在下画线处填上语句,用于撤销指针p,释放p指向的存储空间delete p;return 0;6下列程序的输出结果是 7 。#include <iostream>using namespace std;int main() int i = 5; int *p

6、 =& i;*p = 7; cout << i << endl; return 0;(15也用了)7下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*.*2*1)unsigned fact(unsigned n) if ( n<= 1) return 1; return n*fact(n-1) ; 8与成员访问表达式p->name等价的表达式是 (*P).name 。9.UML的全称为 Unified Modeling Language,统一建模语言 。10.UML中有 结构事物,动作事物,分组事物,

7、注释事物 四种类型事物。11.UML中的四种关系为 依赖,关联,泛化,实现 。12.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。class Samplepublic:Sample(int data=0);Private:Int data;Sample:Sample(int data) 【this->data=data;】 (13)若表达式(x+(y-z)*(m/n)+3中的变量均为double型,则表达式值的类型为 【double】 。(14)有如下循环语句:For(int i=50; i>20; i-=2)  cout&l

8、t;<i<<','运行时循环体的执行次数是 【15】 。(15)利用表达式ai可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后,利用指针p也可访问该元素,相应的表达式是 【*(p+i)】 。(16)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。void reverse(int *a, int size)if(size<2) return;int k=a0;a0=asize-1;asize-1=k;reverse(a+1,  size-1 );(17)有如下类定义:class Samplepubli

9、c:Sample();Sample();Private:Static int date;将静态数据成员data初始化为0的语句是 【int Sample:data = 0;】(18)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。class Shapepublic:virtual int CalArea()=0;class Triangle: public Shapepublic:Triangleint s, int h: side(s),height(h)  int Cal

10、Area(int side,int height) return side*height/2 ; private:    int side;    int height;(19)UML的定义包括UML语义和UML表示法。(20)观看以下程序:class pointpublic: void show() cout<<”point”<<endl;void main()point p1;point *p;p=&p1; p1.show(); _/通过对象p1访问show函数p->show() ;/通过指针

11、p访问show函数21、 在C+类中可以包含_公有_、_私有 _和_保护_三种具有不同访问控制权的成员。22、 定义类时,在类头中将使用关键字_class_来表示类定义的开始。如果一个类中至少有一个纯虚函数,则该类称为_抽象类 _。23、 C+类的组成包括数据成员和_成员函数_,友元_不是 (是、不是)该类的成员函数。24、 友员函数是用关键字_friend _修饰的非成员函数。25、 若有:int i;int &j=i;i=10;j=i+1;则i=11,j=11。26、 new的功能是动态申请内存空间,delete的功能是释放由new申请的空间。二.选择题1 建立派生类对象时,3种构

12、造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为()A abc B acb C cab D cba答案:A2下面描述中,符合结构化程序设计风格的是(A) A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B)模块只有一个入口,可以有多个出口 C)注重提高程序的执行效率 D)不使用goto语句3下面概念中,不属于面向对象方法的是(D) A)对象 B)继承 C)类 D)过程调用4关于面向对象的程序设计方法,下列说法正确的是(D) A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 B)“多态性”指

13、的是对象的状态会根据运行时要求自动变化 C)基类的私有成员在派生类的对象中不可访问,也不占内存空间 D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用5判断字符型变量ch是否为大写英文字母,应使用表达式(D)A ) ch>='A' & ch<='Z' B ) ch<='A' |ch>='Z'C ) 'A'<=ch<='Z' D ) ch>='A' && ch<='Z'6已知下列语句中的x

14、和y都是int型变量,其中错误的语句(C)A ) x=y+; B ) x=+y; C ) (x+y)+; D ) +x=y;7执行语句序列(D)int n;cin >> n;switch(n) case 1: case 2: cout << '1' case 3: case 4: cout << '2' break;default: cout << '3'时,若键盘输入1,则屏幕显示A)1 B)2 C)3 D)128关于动态存储分配,下列说法正确的是(B)A)new和delete是C+语言中专门用于

15、动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new9)对类的构造函数和析构函数描述正确的是(A)A 构造函数可以重载,析构函数不能重载 B 构造函数不可以重载,析构函数可以重载 C 构造函数可以重载,析构函数也可以重载 D构造函数不能重载,析构函数也不能重载(10)下列程序的输出结果是(A)#include <iostream>using namespace std;int main() char a = "H

16、ello, World" char *ptr = a; while (*ptr) if (*ptr >= 'a' && *ptr <= 'z') cout << char(*ptr + 'A' -'a'); else cout << *ptr; ptr+; return 0;A ) HELLO, WORLD B ) Hello, WorldC ) hELLO, wORLD D ) hello, world11) 已知:int m=10;在下列定义引用的语句中,正确的是(

17、A)A ) int &x=m; B )int y=&m; C )int &z; D ) int &t=&m;(17)下列函数原型声明中错误的是(D)A ) void Fun(int x=0, int y=0); B ) void Fun(int x, int y);C ) void Fun(int x, int y=0);D ) void Fun(int x=0, int y);(12)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是(B)A ) char test(int,int,in

18、t);B ) double test(int,int,double);C ) int test(int,int,int=0);D ) float test(int,int,float=3.5F);(13)已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是(C) A) f(v1, &v2); B) f(v1, v2); C) f(&v1, v2); D) f(&v1, &v2);(14)有以下类定义class MyClasspublic: MyClass()cout

19、<<1;则执行语句MyClass a, b2, *p2;后,程序的输出结果是(B)A)11 B)111 C)1111 D)11111(15)关于动态存储分配,下列说法正确的是(B)A)new和delete是C+语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(16)关于友元,下列说法错误的是(A)A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可

20、以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(17)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的(C) A)公有成员和私有成员 B)私有成员和保护成员 C)公有成员和保护成员 D)私有成员、保护成员和公有成员(18)在C+中用来实现运行时多态性的是(D) A)重载函数 B)析构函数 C)构造函数 D)虚函数(19)一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是(C) A)每个派生类的构造函数都要为虚基类构造函数提供实参 B)多继承时有可能出现对基类成员访问的二义性问题 C)使用虚基类可以解

21、决二义性问题并实现运行时的多态性 D)建立最派生类对象时,虚基类的构造函数会首先被调用(20)在一个类体的下列声明中,正确的纯虚函数声明是(A)A) virtual void vf()=0; B) void vf(int)=0;C) virtual int vf(int); D) virtual void vf(int) (21)在下面的运算符重载函数的原型中,错误的是(A)A) Volume operator - (double, double);B) double Volume:operator- (double);C) Volume Volume: :operator - (Volume

22、);D) Volume operator - (Volume, Volume);(22)下列关于继承方式的描述中,错误的是(D) A)如果不显式地指定继承方式,缺省的继承方式是私有(private)B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员(23)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则: DA)FA必须定义在FB之前B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之

23、后,则FB的原型必须出现在FA的定义之前(24)有如下两个类定义class AA;class BB    AA v1,*v2;    BB v3;    int *v4;其中有一个成员变量的定义是错误的,这个变量是:C A)v1B)v2C)v3D)v4(25)有如下类定义(13)B:class XX     int xdata;public:    XX(int n=0) : xdata (n) ;class YY : public X

24、X    int ydata;public:    YY(int m=0, int n=0) : XX(m), ydata(n) ;YY类的对象包含的数据成员的个数是A)1B)2C)3D)4(26)下列有关运算符函数的描述中,错误的是:CA)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运算符重载函数(27)下列字符串可以用作C+标识符的是:DA)2009varB)gotoC)test - 2009D)_123(28)下列枚举类型的

25、定义中,包含枚举值3的是:AA)enum test RED, YELLOW, BLUE, BLACK;B)enum test RED, YELLOW=4, BLUE, BLACK;C)enum test RED=-1, YELLOW,BLUE, BLACK;D)enum test RED, YELLOW=6, BLUE, BLACK;(29)有如下程序段:Cint i=1;while (1)     i+;    if(i = 10) break;    if(i%2 = 0) cout <<

26、 '*'执行这个程序段输出字符*的个数是A)10B)3C)4D)5(30)已知数组arr的定义如下:Dint arr5 = 1,2,3,4,5;下列语句中输出结果不是2的是A)cout << *arr+1 <<endl;B)cout << *(arr+1)<<endl;C)cout << arr1 <<endl;D)cout << *arr <<endl; (31)计算斐波那契数列第n项的函数定义如下:BInt fib(int n)    if (n =

27、 0) return 1;    else if (n = 1) return 2;    else return fib(n-1)+fib(n-2);若执行函数调用表达式fib(2),函数fib被调用的次数是A)1B)2C)3D)4(32)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是: DSample a2, *p = new Sample;A)0B)1C)2D)3(33)下列关于虚基类的描述中,错误的是:CA)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被调用一次C)

28、声明“class B : virtual public A”说明类B为虚基类D)建立派生类对象时,首先调用虚基类的构造函数(34)下列关于运算符重载的描述中,错误的是: CA):运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为友元D)重载运算符应完成“下标访问”操作(35)有如下类定义class A char *a;public:A():a(0)A(char *aa)  /把aa所指字符串拷贝到a所指向的存储空间a=          A&

29、#160;     ;strcpy(a,aa);strcpy(a,aa);A() delete a;横线处应填写的表达式是A)new charstrlen(aa)+1               B)charstrlen(aa)+1C)charstrlen(aa)             

30、        D)new charsizeof(aa)-1(36)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是: (B)A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元运算符(37)下列选项中不属于结构化程序设计原则的是:A A)可封装B)自顶向下C)模块化D)逐步求精38、下列特性中不是面向对象程序设计语言所特有的是( D )。(A)数据封装(B)继承(C)多态性(D)模板39、( B )是给变量取一个别名,它引入了变量的同意词。(A)指针(B)引用(C)枚举(D)结构40、类成员的访问权限中

31、,( C )只能被本类的成员函数和其友元函数访问。(A)share(B)public(C)private(D)protected41、关于构造函数,下列说法不正确的是( D )。(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个42、派生类可以访问其基类的( D )。(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员43、下列关于运算符重载的描述中,错误的是( B )。(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级

32、44、C+语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是( B ) (A)面向过程(B)面向对象(C)安全性(D)复用性45、对于类中定义的成员,其隐含访问权限为( C )。 Apublic Bprotected Cprivate Dstatic46、下面有关重载函数的说法中正确的是( C ) (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表 (D)重载函数名可以不同;47、有如下的对类“CSample”的说明,其中( A )是错误的。class CSample Aint a=23;BCSample();public:CCSample(int val);D CSample();48、在int a=3,int *p=&a;中,*p的值是(D )A.变量a的地址值 B.无意义C.变量p的地址值 D.349、每个类( C )构造函数。 (A)只能有一个 (B)只可有公有的 (C)可以有多个 (D)只可有缺省的50、在一个类中可以对一个操作符进行( D )

温馨提示

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

评论

0/150

提交评论