《全国2013年1月高等教育自学考试-C++程序设计试题-附答案(共13页).doc》由会员分享,可在线阅读,更多相关《全国2013年1月高等教育自学考试-C++程序设计试题-附答案(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上绝密 考试结束前全国2013年1月高等教育自学考试C+程序设计试题课程代码:04737请考生按规定用笔将所有试题的答案涂、写在答题纸上。选择题部分注意事项: 1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。1下
2、列不属于C+关键字的是A. extern B.goto C.freeD.default2C+中定义标准输入输出的库为A.stdio B.math C.iostream D.stdlib3My是一个类,则执行语句My a3,*p2之后,自动调用构造函数次数为A.2B.3C.4D.54下列语句错误的是A. int val( 20);B.extern int val( 20);C. const int val; D.extern const int val;5下列说法中,有关构造函数是正确的是A.任何一类必定有构造函数B.可定义没有构造函数的类C.构造函数不能重载D.任何一类必定有缺省的构造函数6下
3、面关于类和对象说法不正确是A.类由数据与函数组成B.一个对象必属于某个类C.对象是类的实例D.一个类的对象只有一个7下面选项中不是类成员函数的是A.构造函数B.析构函数C.友元函数D.静态函数8在C+中类之间的继承关系具有A.自反性B.对称性C.传递性D.反对称性9C+中类的成员默认为A. public B.private C.protected D.static10C+中要实现动态联编,调用虚函数时必须使用A.基类指针B.类名C.派生类指针D.对象名11.下面对析构函数的正确描述是A.系统不能提供默认的析构函数B.析构函数必须由用户定义C.析构函数没有参数D.析构函数可以设置默认参数12在下
4、面的二维数定义正确的是A.int ary5; B.int ary5=0,1,2;C.int ary5; D.int ary5,5;13.以下说法中正确的是A.C+程序总是从第一个定义的函数开始执行B.C+程序总是从main函数开始执行C.C+中函数必须有返回值D.C+中函数名必须唯一14对C+中主函数描述正确的是A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有个D.名称不限,必须有且只能有个15下面声明纯虚函数语句正确的是A. void fun( ) =0; B.virtual void fun( )=0;C. virtual void fun( ); D.
5、virtual void fun( ) ;16对于拷贝初始化构造函数和赋值操作的关系,正确的描述是A.拷贝初始化构造函数和赋值操作是完全一样的操作B.进行赋值操作时,会调用类的构造函数C.当调用拷贝初始化构造函数时,类的对象正在被建立并被初始化D.拷贝初始化构造函数和赋值操作不能在同一个类中被同时定义17.使用重载函数的目的是A.共享函数数据B.减少代码量C.优化运行效率D.提高可读性18.C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念19假定有“char*p=“
6、Hello”;”,若要输出这个字符串的地址值正确的写法为A. cout*p; B.coutp;C. coutp; D.cout (void*)p;20对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是A公有类型B.私有类型C保护类型D.友元类型非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。二、填空题(本大题共20小题,每小题1分,共20分)21C+程序的编译是以_文件_为单位进行的。22C+语言支持的两种多态性分别是编译时的多态性和_运行时_的多态性。23重载的运算符保持其原有的操作符个数、_优先级_和结合性不变。24在C
7、+中,函数的参数有两种传递方式,它们分别是值传递和_地址传递_。25含有_纯虚函数_的类称为抽象类。26C+程序运行时的内存空间可以分成全局数据区,堆区,栈区和_代码区_。27对于无返回值函数,定义函数时要用_VOID_修饰函数类型。28定义重载函数必须在参数的个数或参数的_类型_上与其它同名函数不同。29拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是_拷贝每一个数据成员_。30以面向对象方法构造的系统,其基本单位是_类_。31拷贝构造函数使用_对象_作为参数初始化创建中的对象。32当一个成员函数被调用时,该成员函数的_this指针_指向调用它的对象。3
8、3类可将实现细节隐藏起来,这种机制称为_封装_。34在面向对象的程序设计中,通过封装实现数据隐藏;通过_重载_实现代码的复用。35在公有继承的中基类数据成员在派生类中的访问权限_ 的public和protected成员的访问属性在中不变,而的private成员不可访问_。36复杂对象可以由简单对象构成,这种现象称为_聚合_。37如有“char*p=Hello;”,则语句“cout* (p+1);”输出值是_e_。38基类和派生类的关系称为_继承_。39在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,是公有的;而对于其外部的程序而言,是_
9、私有的_。40假定x =10,则表达式x =10? 20:30的值为_20_。三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请写出错误所在行并给出修改意见41.#include class point private: float x,y;public: point( float a,float b) x = a;y = b; void f( ) x=0;y=0; void getx( ) cout x endl; void gety( ) cout y endl; ; main() point a (3.5) ;(实参要2个)a.getx( )42. #incl
10、ude main( ) int x =7; const int * p = &x;* p=99; (不允许改变指针常量的值) cout * p endl;43. #include class test private: int x;y; public: void f( int a,int b) x = a;y = b; int max( ) return(x y) ? x:y; ; main( ) test a; a.f(1,3); cout a. max( ) endl;44. #include class test private: int x; public:test( int a) x
11、 = a; void set( int a) x = a; void get( ) cout x endl; ; class testl: public test private: int x; public : testl ( int a) x = a; void set( int a) x = a; void get( ) cout x endl; ;45. #include class f private: int x,y; public:void fl ( int a,int b) x = a;y = b ;void print( ) cout x y endl; ; main( )
12、f a; float x = 1.5 y = 2.0;a.fl(x,y); a.print( ); 四、完成程序题(本大题共5小题,每题4分,共20分)46.将下划线处缺少的部分写在“答题纸”上。源程序如下: #include using namespace std ;class base int a,b; public: base(int x,int y)a=x;b=y; void show(_base p_) coutp.a,p.bendl; _;_ void main( ) base b(78,87);b.show(b); 47将下划线处缺少的部分写在“答题纸上。源程序如下: #incl
13、ude #include using namespace std ; void main( ) _ ofstream _myf(ab. txt);定义输出流文件,并初始化 _myf_This ia a TXT file;向文件输入字符串 myf. close( ); 48在下面程序中的下划线处填上适当的程序(答案写在“答题纸上),使程序的输出结果如下: 67,90 源程序如下: #include using namespace std ; class base private: int x,y; public: void initxy( int a,int b)x=a;y=b; void sh
14、ow( base*p); ; inline void base:show(_ base*p _) coutx,y show(p); void main( ) base a;a.initxy( 67 ,90); print(_&a_); 49下面程序给出了一个从普通的基类派生出一个模板类的方法,在下划线处填上正确的 部分(答案写在“答题纸上)。 #include using namespace std ; class Base public: Base( int a)x=a; int Getx()return x; void showb()coutxendl; private: int x; ;
15、 template class derived: public Base public: derived(T a,int b): _Base(b)_ y=a; T Gety()return y; void showd()couty Getx()endl;private:_T y;_ ; void main( ) Base A(458);A.showb( ); derivedB It is,1 357);B.showd( ); 50下面程序的运行结果如下: 20,22 60,22 将下划线处缺少的部分写在“答题纸上。源程序如下: #include using namespace std; cla
16、ss base private: const int a; static const int b; public: base(int); void Show( ); ; _base:b_=22; _base:base(int i)_:a( i ) 初始化 void base:Show( ) couta”,”bendl; void main( ) base al(20),a2(60); a1Show( ); a2Show( ); 五、程序分析题(本大题共4小题,每小题5分,共20分)51给出下面程序的输出结果 #include using namespace std; class base in
17、t x;public : void setx(int a) x =a; int getx( ) return x;void main( ) int *p;15 base a; a. setx ( 15) ; p = new int( a. getx( ) ;cout *p;52.给出下列程序的输出结果 #include #include #include using namespace std ; void main( )real is:5, image is :6real is:7.5, image is :8.5 complex fsl ( 5 ,6) ; complex fs2( 7.
18、5 ,8.5) ; string strl ( real is: ) ; string str2 ( image is : ) ; cout strl fsl. real( ) , str2 fsl. imag( ) endl;cout strl fs2. real( ) , str2 fs2. imag( ) endl;53.给出下面程序的输出结果 #include using namespace std; class base private : int x; public : void setx(int a) x = a; int getx( ) return x; ; void mai
19、n( )8989 base a,b; a. setx( 89) ; b=a; cout a. getx( ) endl; cout b. getx( ) endl;54.给出下面程序的输出结果 #include using namespace std ; void main( ) int a = 10,20,30,40 , * pa = a;20 int * &pb =pa; pb + +; cout * pa endl;六、程序设计题(本大题共1小题,每小题10分,共10分)55.在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词) #include #include class str string s; int n,a100,j,l; public: str( string& a)s=a;n =0;j =0;l =0; test(); int*geta()return a; ; 请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)Str: int test()al=0;while(sj!=0) If(sj= ) n+;l+; al=j+1;j+;Return n+1;专心-专注-专业