• 欢迎来到安徽自考网!为考生提供安徽自考信息服务,网站信息供学习交流使用,非政府官方网站,官方信息以安徽教育考试院www.ahzsks.cn为准。

联系我们:19305518756

距上半年自考报名时间预计101

距上半年自考考试时间预计142

考生服务:

  • 报名报考|
  • 考试安排|
  • 所在位置:安徽自考网 > 自考试卷 > 全国2012年1月04737C++程序设计自考试卷

    全国2012年1月04737C++程序设计自考试卷

    2018-08-13 14:20:00   来源:其它    点击:   
    自考在线学习 +问答
       

      全国2012年1月高等教育自学考试

      C++程序设计试题

      课程代码:04737

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

      在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。

      1.如声明对象数组,则下列描述正确的是( )

      A.对每个元素均调用一次构造函数

      B.部分元素调用构造函数,其它元素不需调用

      C.均不需要调用构造函数

      D.只是首元素调用构造函数

      2.不同对象调用同一成员函数时,this指针指向( )

      A.不同对象 B.相同对象

      C.无对象 D.不确定

      3.设存在函数intmax(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式正确的是( )

      A.int m=max(22,max(59,70));

      B.int m=max(max(22,59),max(59,70));

      C.int m=max(max(22,70),59);

      D.以上皆正确

      4.一个类可拥有多少个构造函数( )

      A.0个 B.1个

      C.1或多个 D.以上皆对

      5.在编译指令中,嵌入指令是指( )

      A.#include B.#define

      C.#if D.#else

      6.设存在数组a,其长度为Len,下列哪项操作是将a中元素复制到数组b中( )

      A.reverse(a+a,Len,b); B.sort(a,a+Len,b);

      C.find(a,a+Len,b); D.copy(a,a+Len,b);

      7.下列哪个要素不是面向对象的关键要素( )

      A.模块化 B.抽象性

      C.封装性 D.继承性

      8.下列对于类的描述错误的是( )

      A.类要先声明后使用

      B.类是具有仅有标识的实体

      C.两个类可以使用同一个名称

      D.组成类的不仅有数据,还可以有对数据进行操作的函数

      9.使用引用调用方式将实参传给形参,下列说法正确的是( )

      A.形参是实参的备份 B.实参是形参的备份

      C.形参和实参共享同一对象 D.形参和实参无联系

      10.关于对象的性质,下列描述错误的是( )

      A.同一类对象之间可相互赋值

      B.不能使用对象数组

      C.对象可以用作函数参数

      D.一个对象可以用作另一个类的成员

      11.类的私有成员可在哪里被赋值( )

      A.类体中 B.该类的成员函数中

      C.A和B D.以上都不是

      1 2.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转a中各元素( )

      A.reverse(a,a+Len); B.sort(a,a+Len);

      C.find(a,a+Len,value); D.copy(a,a+Len,b);

      13.用于标识八进制常量的前缀或后缀是( )

      A.无 B.后缀L或1

      C.前缀零 D.前缀Ox

      14.派生类中继承的基类成员初始化如何进行( )

      A.由派生类构造函数调用基类的构造函数进行

      B.由派生类构造函数进行

      C.由基类构造函数进行,无需派生类构造函数调用

      D.以上皆不正确

      1 5.对于多重继承,下列描述正确的是( )

      A.所有基类使用相同的派生方式 B.每个基类可使用不同派生方式

      C.只能是public派生 D.只能是protected派生

      16.下列关于类的权限描述错误的是( )

      A.类本身的成员函数可以访问自身的任何成员

      B.类的对象可以访问该类的所有成员

      C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问

      D.一个类可以将另一个类的对象作为成员

      17.运算符delete与哪个函数一起运行( )

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

      C.主函数 D.不与任何函数一起工作

      18.一个类可以获得另一个类的特性的机制称为( )

      A.抽象 B.封装

      C.继承 D.多态性

      19.使用下列哪个格式控制符可设置转换十六进制为十进制( )

      A.dec B.oct

      C.hex D.endl

      20.对引用调用描述正确的是( )

      A.分配新存储空间

      B.修改已存储空间的名称为引用名

      C.引用名与已存在存储空间无任何关联

      D.将引用名标识符与一块已存在储区域相关联,没有分配新存储空间

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

      请在每小题的空格中填上正确答案,错填、不填均无分。

      21.公共派生中,基类的公有成员在派生类中是______。

      22.若要使用标准输入流机制从键盘输入一个整数赋给整型变量a,相应的C++语句是______。

      23.UML中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为______。

      24.C++函数中按引用调用传递参数时使用______作为参数。

      25.在C++中除具有______语句和switch语句的函数外,其它函数都可以说明为内联函数。

      26.C++中规定模板以______关键字和一个形参表示开头。

      27.构造函数不能被继承,一个派生类只能调用它的______基类的构造函数。

      28.vector类中用于获取存放的元素个数的方法是______。

      29.C++中istream类的直接基类是______。

      30.要关闭一个文件输出流对象myFile,所用的C++语句是______。

      31.执行下列代码

      double pi=3.141592

      cout<

      32.在私有派生中,基类的权限为private的成员,在派生类中______。

      33.C++总共有3种文件流,分别是输入文件流、输出文件流和______。

      34.C++使用流进行输入输出,其中能捕获键盘输入的对象是______。

      35.在vector类中删除向量中最后一个对象的方法是______。

      36.函数重载可使一个函数名具有多种功能,称这种特性为______。

      37.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是引进了______概念。

      38.______指令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。

      39.在C++标准输出方式中,要设置输出数据字段宽度width所使用的操控符是______。

      40.设有定义int x;float y;,则10+x+y值的数据类型是______。

      三、改错题(本大题共5小题,每小题2分,共10分)

      下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

      41.#include

      main(){

      int x=9,y=8,z=7;

      const int * p=z;

      cout<< * p<

      }

      42.#include

      main(){

      int x=8,y=6;

      const int*const p=&x;

      p=&y;

      cout<<* p<

      }

      43.#include

      main(){

      folat p;

      p=new folat[5];

      for(int i=0;i<5;i++)

      {cin>> * (p+i);cout<< * (p+i)<

      delete p;

      }

      44.template

      T f(T x){

      T y;

      y=x+T;

      return y;

      }

      45.#include

      class point{

      int x;

      public:void init(int a){x=a;}

      int getx(){return x;}

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

      };

      main(){

      point a;

      a.init(20,30);

      cout<

      }

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

      46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。

      x=2,y=3

      #include

      class Sample

      {

      int x,y;

      public:

      Sample( ){

      x=y=0;

      }

      Sample(int a,int b){

      x=a;

      (__________)

      }

      void disp( )

      {

      cout<<"x="<

      }

      }(____­_______)

      void main( )

      {

      Sample s(2,3),*p=&s;

      p - >disp();

      }

      47.在下划线处填上适当的语句,使程序的输出结果如下:

      n=30

      #include< iostream.h >

      template< class T >

      class Sample

      {

      T n;

      public:

      Sample( ){ }

      Sample(T i){_________}

      Sample&operator+(const Sample&);

      void disp( ){cout<<"n="<

      };

      template

      Sample&Sample::operator+(const Sample&s)

      {

      static Sampletemp;

      return temp;

      }

      void main( )

      {

      Samples1(10),s2(20),s3;

      s3=s1+s2;

      s3.disp();

      }

      48.在下划线处填上适当的语句,使程序的输出结果如下:

      1 2 3 4 5 6 7 8 9 10

      #include

      class Sample

      {

      int A[10][10];

      public:

      int &operator()(int,int);

      };

      int &Sample::operator()(int x,int y)

      {

      return A[x][y];

      }

      void main()

      {

      Sample a;

      int i,j;

      _________

      for(j=0;j<10;j++)

      _________

      for(i=0;i

      cout<

      cout<

      }

      49.在下划线处填上适当的句子,完成函数的定义。

      #include

      class Sample

      {

      int x;

      public:

      Sample( ){ };

      _________{x=a;}

      _________{x=a.x++ +10;}

      void disp( ){cout<<"x="<

      };

      void main( )

      {

      Sample s1(2),s2(s1);

      s1.disp( );

      s2.disp( );

      }

      50.输入一个字符串,将其逆序后输出。

      #include

      using namespace std;

      void main()

      {

      char a[50];memset(a,0,sizeof(a));

      int i=0,j;

      char t;

      cin.getline(a,50,'\ n';

      for(i=0,j=strlen(a)-1;i<_________;i++,j ―― )

      {

      t=a[i];

      a [j]=t;

      }

      cout<

      }

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

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

      #include

      class example

      {

      int a;

      public:

      example(int b){a=b++;}

      void print( ){a=a+1;cout<

      void print( )const{cout<

      };

      void main( )

      {

      example x(3);

      const example y(2);

      x.print( );

      y.print( );

      }

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

      #include

      class Sample

      {

      int x,y;

      public:

      Sample( ){x=y=0;}

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

      ~Sample()

      {

      if(x==y)

      cout<<"x=y"<

      else

      cout<<"x!=y"<

      }

      void disp()

      {

      cout<<"x="<

      }

      };

      void main()

      {

      Sample sl(2,3);

      s1.disp();

      }

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

      #include

      class Sample

      {

      int n;

      static int sum;

      public:

      Sample(int x){n=x;}

      void add( ){sum+=n;}

      void disp( )

      {

      cout<<"n="<

      }

      };

      int Sample::sum=0;

      void main( )

      {

      Sample a(2),b(3),c(5);

      a.add( );

      a.disp( );

      b.add( );

      b.disp( );

      c.add( );

      c.disp( );

      }

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

      #include

      class A{

      private:

      friend class B;

      A(int val=0):data(val),use(1){}

      int use,data;

      };

      class B{

      public:

      A*pa;

      B(int val=0):pa(new A(val)){ }

      ~B( ){if( -- pa ->use==0)delete pa;}

      B(B&rhs){ + + rhs ->use;pa=rhs.pa;}

      B&operator=(B&rhs);

      A*operator ->( ){return pa;}

      void Display( ){

      cout<<"data="<data

      <<",use="<use<

      }

      };

      B&B::operator=(B&rhs)

      {

      if(this = = &rhs)return*this;

      if( -- pa ->use = =0)delete pa;

      + + rhs ->use;

      pa=rhs.pa;

      return * this;

      }

      int main( ){

      B b1(1),b2(b1),b3(3);

      b1.Display( );

      b2.Display( );

      b3.Display( );

      b3=b1;

      b1.Display( );

      b3.Display( );

      return 0;

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

      55.已知一个student类,包括学姓名,成绩和等级,不含任何成员函数.process为学生信息处理类.

      class student{

      char name[ 10 ];

      int deg;

      char level[ 7 ];

      friend class process:

      public:

      student(char na[ ],int d){strcpy(name,na);deg=d;}

      } ;

      class process{

      public:

      void trans(student s[ ]){…}//根据学生成绩计算学生等级(优大于89分,良大于79分,中大于69分,及格大于59分,不及格小于60分).

      void disp(student s[ ]){...}//根据成绩降序打印所有学生信息

      };

      要求实现process类中的两个函数:

    安徽自考助学报名预约

    我已阅读并同意《用户隐私条款》

    上一篇:全国2012年1月00795综合英语(二)自考试卷
    下一篇:全国2012年1月04747Java语言程序设计(一)自考试卷

    扫一扫加入微信交流群

    与其他自考生一起互动、学习探讨,提升自己。

    扫一扫关注微信公众号

    随时获取自考信息以及各类学习资料、学习方法、教程。

    扫码小程序选择报考专业

    进入在线做题学习

    查看了解自考专业

    查询最新政策公告

    进入历年真题学习