
2015年自考c++模拟试题及答案.doc
29页模拟试题一一、单项选择题(本大题共 10 小题,每小题 2 分,共 20 分)1.面向对象程序设计中的数据隐藏指的是( ) A.输入数据必须输入保密口令 B.数据经过加密处理 C.对象内部数据和代码合并在一起 D.对象内部数据结构的不可访问性 2.在 C++中,编写一个内联函数 Fun,使用 int 类型的参数,求其平方并返回,返回值也为 int 类型,下列定义正确的是 ( ) A.int Fun(int x){return x*x;} B.inline int Fun(int x){return x*x;} C.int inline Fun(int x){return x*x;} D.int Fun(int x){inline return x*x;} 3.下面关于重载函数的叙述中正确的是 ( ) A.重载函数必须具有不同的返回值类型 B.重载函数的形参个数必须不同 C.重载函数必须有不同的形参列表 D.重载函数的函数名可以不同 4.若有定义“int x=17;” ,则语句“cout class Point { int X,Y; public: Point( ){X=0;Y=0;} Point(int x=0,int y=0){X=x;Y=y;} void display( ){cout template void Swap(T t=a,a=b,b=t; } void main( ) { int a=3,b=4; char str1[5]=”abcd”,str2[5]=”hijk”; Swap(a,b); Swap(str1,str2); cout class Base { public: virtual void fun( ){coutfun( ); } 25.下面的程序有一处错误,请用下横线标出错误所在行并说明错误原因。
#include class A { int x; protected: int y; public: A(int xx,int yy){x=xx; y=yy;} }; class B:public A { public: B(int a,int b):A(a,b){} void display( ){cout class A {int a; public:A(int i=0){a=i;}int Geta( ){return a;} }; class B {A a;int b; public:B(int i=0,int j=0): ① }void display( ){cout class A { public:① ; }; class B1:public A { public:void display( ){coutdisplay( ); } void main( ) {B1 b1;B2 b2;A* p[2]={for(int i=0;i #include class Person {char name[20]; public:Person(char* s){strcpy(name,s);}void display( ){cout class Integer {int x; public:Integer(int a=0){x=a;}void display( ){cout class Test { private:int num; public:Test(int n=0){num=n;num++;}~Test( ){cout class A { public:virtual void fun (int data){coutfun(1);pA->fun(“Hello”); } 33.#include void main( ) {cout.fill('*'); cout.width(10); cout class Num {int X,Y; public:Num(int x,int y=0){X=x;Y=y;} void value(int x,int y=0){X=x;Y=y;} void value( ){cout0?’+’:’-’)0?Y:-Y) class Sample { private:int i;static int count; public:Sample( );void display( ); }; Sample::Sample( ) {i=0;count++; } void Sample::display( ) {cout class A {int a; public:A(int aa=0){a=aa;cout B.template QF(Qx){ QF(Qx){ return Q+x; return x+x; } } C.template D.template TF(Tx){ TF(Tx){ return x*x; return x>1; } } 5. 友元关系不能 ( ) A. 继承 B. 是类与类的关系 C. 是一个类的成员函数与另一个类的关系 D. 提高程序的运行效率 6. 语句 ofstream f( ″ SALARY.DAT ″ ,ios::app | ios::binary); 的功能是建立流对象 f ,试图打开文件 SALARY.DAT 并与之连接,并且 ( ) A. 若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B. 若文件存在,将其置为空文件;若文件不存在,打开失败 C. 若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D. 若文件存在,打开失败;若文件不存在,建立一个新文件 7. 下面说法正确的是 ( ) A. 内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方 B. 内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方 C. 类的内联函数必须在类体内定义 D. 类的内联函数必须在类体外通过加关键字 inline 定义 8. 可以用 p.a 的形式访问派生类对象 p 的基类成员 a ,其中 a 是 ( ) A. 私有继承的公有成员 B. 公有继承的私有成员 C. 公有继承的保护成员 D. 公有继承的公有成员 9. 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 ( ) A. 派生类的对象可以赋给基类的对象 B. 派生类的对象可以初始化基类的引用 C. 派生类的对象可以直接访问基类中的成员 D. 派生类的对象的地址可以赋给指向基类的指针 10. 对于类定义 class A{ public: virtual void func1( ){ } void func2( ){ } }; class B:public A{ public: void func1( ){cout class Tany{ T x,y; public: Tany(T a,T b){x=a,y=b;} T sum( ){return x+y;} }; Tany (int) obj(10,100); 23. 指出下面程序段中的错误,并说明出错原因。
class one{ private: int a; public: void func(two }; class two{ private: int b; friend void one::func(two }; void one::func(two } 24. 指出下面程序段中的错误,并说明出错原因 # include class A{ public: void fun( ){cout template T* f(T* a,T* b,int n) { T* c=_________; for(int i=0;i # include _________// 定义由 PASS 指针所指向的口令 wolleh void main() { char user [ 10 ] ;// 用于存放输入的口令 cout class base{ public: _________func( ){return 0;} }; class derived:public base{ public: int a,b,c; _________ setValue(int x,int y,int z){a=x;b=y;c=z;} int func( ){return(a+b)*c;} }; void main() { base b; derived d; cout void main( ) { int *a; int * int b=10; p= cout template Tf(T*a,T*b,int n){ Ts=(T)0; for(int i=0;i void main() { for(int i=0;i0? ′ 0 ′ : ′′ ); } 输出为: 34. 运行下面的程序,写出当输入 25 , 60 时的输出结果。
# include class goods{ private: static int totalWeight; int weight; public: goods(int w) { weigh=w; totalWeight+=w; } goods(goods totalWeight+=weight; } ~ goods() { totalWeight-=weight; } int getwg() { return weight; } static int getTotal() { return totalWeight; } }; int goods::totalWeight=0; void main() { int w; cout>w; // 输入 25 goods g1(w); cin>>w; // 输入 60 goods g2(w); cout class A{ public: A( ){ } virtual void func( ){cout class My Class { public: int number; void set(int i); }; int number=3; void MyClass::set (int i) { number=i; } void main() { MyClass my1; int number=10; my1.set(5); cout Q Sum(Qx,Qy){ return(x)+(y); } 则下列语句中对该函数模板 错误 的使用是 ( ) A.Sum(10,2); B.Sum(5.0,6.7) ; C.Sum(15.2f,16.0f); D.Sum( ″ AB ″ , ″ CD ″ ); 5. 已知类 A 是类 B 的友元,类 B 是类 C 的友元,则 ( ) A. 类 A 一定是类 C 的友元 B. 类 C 一定是类 A 的友元 C. 类 C 的成员函数可以访问类 B 的对象的任何成员 D. 类 A 的成员函数可以访问类 B 的对象的任何成员 6. 如果表达式 ++i*k 中的“ ++ ”和“ * ”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为 ( ) A.operator*(i.operator++(),k) B.operator*(operator++(i),k) C.i.operator++().operator*(k) D.k.operator*(operator++(i)) 7. 下列说法中正确的是 ( ) A. 类定义中只能说明函数成员的函数头,不能定义函数体。
