全国2013年1月自学考试C++程序设计试题

发布日期:2019-12-27 编辑整理:安徽省自考网 【字体:

课程代码:04737

请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分

注意事项:

1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。

一、单项选择题(本大题共20小题,每小题1分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。

1.下列不属于C++关键字的是

A. extern                                                         B.goto

C.free                                                              D.default

2.C++中定义标准输入输出的库为

A.stdio                                                            B.math

C.iostream                                                       D.stdlib

3.My是一个类,则执行语句My a[3],*p[2]之后,自动调用构造函数次数为

A.2                                                                  B.3

C.4                                                                  D.5

4.下列语句错误的是

A. int val( 20);                                                  B.extern int val( 20);

C. const int val;                                                D.extern const int val;

5.下列说法中,有关构造函数是正确的是

A.任何一类必定有构造函数                             B.可定义没有构造函数的类

C.构造函数不能重载                                        D.任何一类必定有缺省的构造函数

6.下面关于类和对象说法不正确是

A.类由数据与函数组成                                    B.一个对象必属于某个类

C.对象是类的实例                                           D.一个类的对象只有一个

7.下面选项中不是类成员函数的是

A.构造函数                                                      B.析构函数  

C.友元函数                                                      D.静态函数

8.在C++中类之间的继承关系具有

A.自反性                                                         B.对称性      

C.传递性                                                         D.反对称性

9.C++中类的成员默认为

A. public                                                          B.private

C.protected                                                      D.static

10.C++中要实现动态联编,调用虚函数时必须使用

A.基类指针                                                      B.类名  

C.派生类指针                                                  D.对象名

11.下面对析构函数的正确描述是

A.系统不能提供默认的析构函数                      B.析构函数必须由用户定义

C.析构函数没有参数                                        D.析构函数可以设置默认参数

12.在下面的二维数定义正确的是

A.int ary[5][];                                           B.int ary[][5]={{0,1,2}};

C.int ary[][5];                                           D.int ary[5,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.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=“Hello”;”,若要输出这个字符串的地址值正确的写法为

A. cout<<*p;                                                   B.cout<<p;

C. cout<<&p;                                                  D.cout<< (void*)p;

20.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是

A.公有类型                                                   B.私有类型

C.保护类型                                                   D.友元类型

非选择题部分

注意事项:

用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。

二、填空题(本大题共20小题,每小题1分,共20分)

21.C++程序的编译是以____________为单位进行的。

22.C++语言支持的两种多态性分别是编译时的多态性和____________的多态性。

23.重载的运算符保持其原有的操作符个数、____________和结合性不变。

24.在C++中,函数的参数有两种传递方式,它们分别是值传递和____________。

25.含有____________的类称为抽象类。

26.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和____________。

27.对于无返回值函数,定义函数时要用____________修饰函数类型。

28.定义重载函数必须在参数的个数或参数的____________上与其它同名函数不同。

29.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是____________。

30.以面向对象方法构造的系统,其基本单位是____________。

31.拷贝构造函数使用____________作为参数初始化创建中的对象。

32.当一个成员函数被调用时,该成员函数的____________指向调用它的对象。

33.类可将实现细节隐藏起来,这种机制称为____________。

34.在面向对象的程序设计中,通过封装实现数据隐藏;通过____________实现代码的复用。

35.在公有继承的中基类数据成员在派生类中的访问权限____________。

36.复杂对象可以由简单对象构成,这种现象称为____________。

37.如有“char*p=''Hello'';”,则语句“cout<<* (p+1);”输出值是____________。

38.基类和派生类的关系称为____________。

39.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,是公有的;而对于其外部的程序而言,是____________。

40.假定x =10,则表达式x< =10? 20:30的值为____________。

 

     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) ;

a.getx( )

}

42. #include < iostream. h >

   main( ) {

 int x =7;

   const int * p = &x;

* p=99

   cout<< * p<< endl;

}

43. #include < iostream. h >

   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 < iostream. h >

   class test{

     private: int x;

     public:test( int a) { x = 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 < iostream. h >

   class f{

     private: int x,y;

     public:void fl ( int a,int b) { x = a;y = b ;}

void print( ){ cout<< x<< ''<< y<< endl; }

     } ;

   main( ) {

     f a;

 float x = 1.5 y = 2.0;

a.fl(x,y);

     a.print( );

     }

 

四、完成程序题(本大题共5小题,每题4分,共20分)

46.将下划线处缺少的部分写在“答题纸”上。源程序如下:

   #include < iostream >

   using namespace std ;

class base

   {

     int a,b;

 public:

     base(int x,int y){a=x;b=y;}

     void show(________________)

     {

 cout<<p.a<<’’,’’<<p.b<<endl;

     }

   }________________

 void main( )

   {

     base b(78,87);

b.show(b);

   }

47.将下划线处缺少的部分写在“答题纸’’上。源程序如下:

 #include <iostream>

    #include <fstream>

    using namespace std ;

    void main( )

    {

        ________________myf(''ab. txt'');//定义输出流文件,并初始化

        ________________<<''This ia a TXT file'';//向文件输入字符串

     myf. close( );

    }

48.在下面程序中的下划线处填上适当的程序(答案写在“答题纸’’上),使程序的输出

结果如下:

 67,90

 源程序如下:

 #include <iostream>

   using namespace std ;

   class base

   {

   private:

     int x,y;

   public:

     void initxy( int a,int b){x=a;y=b;}

     void show( base*p);

   } ;

 inline void base::show(________________)

  {

    cout<<p- >x<<'',''<<p- >y<<endl;

  }

  void print( base *p)

  {

     p -> show(p);

}

  void main( )

  {

    base a;

a.initxy( 67 ,90);

    print(________________);

  }

49.下面程序给出了一个从普通的基类派生出一个模板类的方法,在下划线处填上正确的

    部分(答案写在“答题纸’’上)。

    #include <iostream>

    using namespace std ;

 class Base

    {

public:

      Base( int a){x=a;}

      int Getx(){return;}

      void showb(){cout<<x<<endl;}

    private:

      int x;

 } ;

    template <class T>

    class derived: public Base

    {

    public:

      derived(T a,int b): ________________

    {y=a;}

      T Gety(){return y;}

      void showd(){cout<<y<<'' ''<<Getx()<<endl;}

private:

________________

    } ;

    void main( )

    {Base A(458);

A.showb( );

    derived<char *>B ''It is'',1 357);

B.showd( );

    }

50.下面程序的运行结果如下:

    20,22

    60,22

    将下划线处缺少的部分写在“答题纸’’上。源程序如下:

    #include <iostream>

    using namespace std;

    class base

    {

private:

      const int a;

      static const int b;

    public:

      base(int);

      void Show( );

 };

    ________________=22;

    ________________:a( i ){}       //初始化

    void base::Show( )

    {cout<<a<<”,”<<b<<endl;}

    void main( )

    {

 base al(20),a2(60);

      a1.Show( );

      a2.Show( );

 }

 

五、程序分析题(本大题共4小题,每小题5分,共20分)

51.给出下面程序的输出结果

    #include<iostream>

    using namespace std;

    class base

    {

      int x;

public :

      void setx(int a) { x =a; }

 int getx( ) { return x;

};

void main( )

{

      int *p;

      base a;

      a. setx ( 15) ;

      p = new int( a. getx( )) ;

cout<< *p;

}

52.给出下列程序的输出结果

  #include < iostream >

 #include < complex >

  #include < string >

  using namespace std ;

  void main( )

    complex < int > fsl ( 5 ,6) ;

    complex < float > fs2( 7. 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 < iostream >

  using namespace std;

  class base

 private :

    int x;

  public :

    void setx(int a) { x = a; }

    int getx( ){ return x;}

 };

  void main( )

    base a,b;

    a. setx( 89) ;

    b=a;

    cout<< a. getx( ) << endl;

 cout<< b. getx( ) << endl;

54.给出下面程序的输出结果

 #include <iostream >

  using namespace std ;

  void main( )

  {

  int a[ ] = { 10,20,30,40 } , * pa = a;

  int * &pb =pa;

  pb + +;

  cout<< * pa<< endl;

 

六、程序设计题(本大题共1小题,每小题10分,共10分)

55.在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)

 #include<iostream.h>

 #include<string>

 class str{

   string s; int n,a[100],j,1;

   public: str( string& a){s=a;n =0;j =0;l =0;}

     ....test(....);

     int*geta(){return a;}

   } ;

 请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)



安徽省自考网学习课程中心


安徽省自考网声明:


1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。


2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:952056566@qq.com


安徽自考便捷服务

安徽自考微信交流群

安徽自考微信交流群