当前位置:文档之家› 模拟试题一 - 答案

模拟试题一 - 答案

《C++程序设计》模拟试题(一)一、选择题(本大题共10小题,每小题2分,共20分)1.C++源程序文件扩展名为( B)。

A..h B..cpp C..1ib D..obj2.在C++中使用流进行输入输出,其中专用于从键盘进行输入的流是( A)。

A.cin B.cout C.cerr D.clog3.对于类中没有设置访问属性的数据成员,其默认为( C)。

A.public B.protected C.private D.static4.下列关于类和对象的叙述中,错误的是( A)。

A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系5.类的构造函数是在定义该类的一个( C)时被自动调用执行的。

A. 成员函数B. 数据成员C. 对象D. 友元函数6.派生类的对象可以访问以下哪种情况继承的基类成员( D)。

A.私有继承的私有成员B.公有继承的私有成员C.私有继承的保护成员D.公有继承的公有成员7.int Func(int,int);不可与下列哪个函数构成重载( B)。

A.int Func(int,int,int);B.double Func(int,int);C.double Func(double,double);D.double Func(int,double);8.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A)。

A.int AA::a() B.int AA:a()C.AA::a() D.AA::int a()9.设函数void swap(int,int)将交换两形参的值,如两整型变量int a=10;int b=15;则执行swap(a,b)后,a、b值分别为( B)。

A.10,10 B.10,15C.15,10 D.15,1510.当一个类A或函数f()被声明为另一个类B的友元后,类A或函数f()能够直接访问类B的( D)。

A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员D.任何权限的成员二、填空题(本大题共10小题,每小题2分,共20分)1.若要在程序文件中进行标准输入输出操作,则必须在开始的#include命令中使用iostream.h头文件。

2.同一个函数名可以对应着多个不同的函数实现,每一类实现对应着一个函数体,称为函数重载。

3.在C++中,当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含的指针,称之为this指针。

4.假定A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为x.a()。

5.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为n-1。

6.在C++中,对于基类的protected成员,当以public方式派生一个新类时,该成员将成为派生类的protected成员。

7.能够用来作为基类派生出新类,却不能创建自己的对象的类称为抽象类。

8.在C++程序中使用的cout标识符是系统类库中定义的ostream类中的一个对象。

9.若x=5,y=10,则x>y的逻辑值为False。

10.执行“char ch=14*5+2;cout<<ch<<endl;”语句序列后,得到的输出结果为H。

三、阅读下列程序,写出执行结果(本大题共5小题,每小题4分,共20分)1.#include<iomanip.h>void main(){int a[9]={2,4,6,8,10,12,14,16,18};for(int i=0;i<9;i++){cout<<setw(5)<<*(a+i);if((i+1)%3==0)cout<<endl;}}运行结果:2 4 68 10 1214 16 182.#include<iostream.h>#include<string.h>void main(){char *a[5]={"student","worker","cadre","soldier","peasant"};char *p1,*p2;p1=p2=a[0];for(int i=0;i<5;i++){if(strcmp(a[i],p1)>0)p1=a[i];if(strcmp(a[i],p2)<0)p2=a[i];}cout<<p1<<","<<p2<<endl;}运行结果:worker,cadre3.#include<iostream>using namespace std;class Simple{int x,y;public:Simple(){x=y=0;}Simple(int i,int j){x=i;y=j;}void copy(Simple &s);void setxy(int i,int j){x=i;y=j;}void print(){cout<<"x="<<x<<",y="<<y<<endl;} };void Simple::copy(Simple &s){x=s.x;y=s.y;}void func(Simple s1,Simple &s2){s1.setxy(30,40);s2.setxy(70,80);}void main(){Simple obj1(1,2),obj2;obj2.copy(obj1);func(obj1,obj2);obj1.print();obj2.print();}运行结果:x=1,y=2x=70,y=804.#include<iostream.h>class A{public:A();void Show() ;~A();private:static int c;};int A::c =0;A::A(){cout <<"constructor."<<endl;c+=10;}void A::Show(){cout<<"c="<<c<<endl;}A::~A(){cout <<"destructor. "<<endl; }void main(){A a,b;a.Show();b.Show();}运行结果:constructorconstructorc=20c=20destructordestructor5.#include<iostream.h>class base{int n;public:base(){};base (int a){cout << "constructing base class" << endl;n=a;cout << "n=" << n << endl;}~base() { cout << "destructing base class" << endl; } };class subs : public base{int m;public:subs(int a, int b) : base(a){cout << "constructing sub class" << endl;m=b;cout << "m=" << m << endl;}~subs() { cout << "destructing sub class" << endl; } };void main (){subs s(1,2);}运行结果:constructing base classn=1constructing sub classn=2destructing sub classdestructing base class四、完成程序题(本大题共5小题,每小题4分,共20分)1.#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=1;}Sample(int a,int b){x=a;y=b;}void disp(){cout<<"x="<<x<<",y="<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}输出结果为:x=0,y=0x=2,y=32.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。

#include <iostream>using namespace std;const double pi=3.14159;void main( ){double r;cout<<"r=";cin>>r ;double l=2.0*pi*r;double s=pi*r*r;cout<<"The long is:"<<l<<endl;cout<<"The area is:"<<s<<endl;}3.#include <iostream>using namespace std;void main( ){float a,b;float cha(float x,float y); //函数cha的原型声明a=12.5;b=6.5;float c=cha(a,b); //调用函数chacout<<c<<endl;}float cha(float x,float y){float w;w=x-y;return w;}4.根据输出结果,在下划线处填上正确的语句。

相关主题