多平台全面支持
方便选课,随时随地学习
下载APP
小程序
希赛网小程序
首页 > 自考 > 习题练习
导航

​自考C++程序设计2012年10月试题

责编:彭雅倩 2019-06-24
自考资料领取

自考C++程序设计2012年10月试题及答案解析

自考C++程序设计2012年10月试题及答案解析,该试卷为自考C++程序设计历年真题试卷,包含答案及详细解析。

一、单项选择题(本大题共20小题,每小题1分,共20分。)在每小题列出的备选项中只有一项是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。

1.使用下列哪一限定符可强制改变访问方式(  )

A.const
B.short
C.long
D.signed

2.下列表达式,哪一是声明p为指向常量的指针(  )

A.const int *p;
B.int* const p;
C.const int *const p;
D.int *p;

3.运算符:: 叫做(  )

A.下标运算符
B.自增运算符
C.成员访问运算符
D.作用域运算符

4.如果为一个类定义了自己的构造函数,下列描述正确的是(  )

A.系统不再提供默认构造函数,但提供其他构造函数
B.系统提供其他非默认构造函数
C.系统不再提供默认构造函数
D.系统仍提供默认构造函数

5.对于类中的成员,使用protected修饰,表明该成员的访问权限是(  )

A.公有的
B.私有的
C.保护的
D.不可见的

6.类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分配,这种对象建立的过程称为(  )

A.程序化
B.结构化
C.过程化
D.实例化

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

A.类本身的成员函数可以访问自己定义的任何成员
B.类的对象只能访问公有成员
C.普通函数只能通过对象访问类的公有成员
D.一个类不能包含另一个类的对象作为成员

8.在派生中,访问控制方式没有下列哪种(  )

A.publish
B.public
C.protected
D.private

9.采用重载函数的目的是(  )

A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性

10.设类A中包含若干其他类的对象作为成员,则在定义类A的构造函数时,应使用下列哪个符号将A:: A(参数表)与成员初始化列表隔开(  )

A.,
B.;
C.:
D..

11.设存在数组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);

12.函数int sum(int a=10, int b=15, int c=25);不可与下列哪个函数同时声明(  )

A.int sum(int, int, int, int)
B.int sum(int, int, int)
C.int sum(double)
D.int sum(double, double, double);

13.对函数int saveName(char * first, char * sec=" ",char * thd=" ")下列调用方法不正确的是(  )

A.int s=saveName("1","2","3");
B.int s=saveName("1","2");
C.int s=saveName("1");
D.int s=saveName("1",,"3");

14.下列哪个不是函数重载需要满足的条件(  )

A.返回值类型不同
B.参数个数不同
C.参数个数相同时,参数类型不同
D.函数名相同

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

A.同一类对象之间不可相互赋值
B.可以使用对象数组
C.对象可以用作函数参数
D.一个对象可以用作另一个类的成员

16.可用作C++语言用户标识符的一组标识符是(  )

A.void,define,+WORD
B.a3_b3,_123,YN
C.for,-abc,Case
D.2a,DO,sizeof

17.设函数int& index(int a,int i)返回数组a中下标为i的元素,如果在整型数组int array[ ]={1,2,3},在执行index(array, 1)+=3后,array中各元素值为(  )

A.{4,2,3}
B.{1,5,3}
C.{1,2,6}
D.{4,5,6}

18.对指针动态分配空间用的关键字是(  )

A.define
B.int
C.new
D.float

19.一个函数功能不太复杂,但要求被频繁调用,应选用(  )

A.内联函数
B.重载函数
C.递归函数
D.嵌套函数

20.在int a=3, *p=&a; 中,*p的值是(  )

A.变量a的地址值
B.无意义
C.变量p的地址值
D.3

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。

11.默认参数是在_________中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。

12.类所声明的内容用_________括起来,之间的内容称为类体。

13.执行代码double pi= 3.141592;cout﹤﹤pi; 程序的输出结果是_________。

14.在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是_________。

15.常量成员包括常量数据成员,静态常数成员,和_________。

16.通过C++语言中的_________机制,可以从现存类中构建其子类。

17.如果一个函数直接或间接地调用自身,这样的调用称为_________调用。

18.使用C++编译器对C++源程序进行编译产生文件的扩展名是_________。

19.C++的类成员由数据成员和_________组成。

110.C++面向对象程序设计的特点为:抽象,封装,继承和_________。

111.C++标准库string类中用于在主串中检索所需字符串的成员函数是_________。

112.C++中函数参数有两种传递方式:传值和_________。

113.在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。

114.在C++当中,类外的函数只能通过类的对象使用该类的_________。

115.简单成员函数是指声明中不含const,volatile,_________关键字的函数。

116.执行cout﹤﹤char("a"+2)﹤﹤endl; 后的显示结果为_________。

117.假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是_________。

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

119.一旦基类定义了虚函数,该基类的派生类中的_________也自动成为虚函数。

120.在C++类中,有一种类不能生成对象只能被继承,称之为_________。

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

21.#include ﹤iostream.h﹥   template ﹤class T﹥   T minx(T x,T y){   if(x﹥y)   x=y;   return x;   }   void main( )   {   int a;   double d;   cout﹤﹤minx(a,d)﹤﹤endl;   }

22.#include﹤iostream.h﹥   class People{   public:   void People( ){ }   const int age( )const{return 15;}   char * name( ){return"Green";}   } ;   void main( )   {   const People s;   int i=s.age( );   cout﹤﹤"age="﹤﹤i﹤endl;   }

23.#include﹤iostream.h﹥   class A{   public: void show( ){cout﹤﹤"class A show"﹤﹤endl;}   } ;   class B{   public: void show( ){cout﹤﹤"class B show"﹤﹤endl;}   } ;   class C: public A,public B{   public: void print( ){cout﹤﹤"class C print"﹤﹤endl;}   } ;   void main( ){   C c;   c.show( );   c.print( );   }

24.#include﹤iostream.h﹥   class Student{   int x=0,y=0;   public:   Student( ){   x=1;   y=1;   }   Student(int a,int b){   x=a;   y=b;   }   void get( ){   cout﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;   }   } ;   int main( ){   Student student(5,6);   student.get( );   }

25.#include ﹤iostream.h﹥   class Base{   public:virtual void fun( )=0;   } ;   class Test:public Base{   public:virtual void fun( ){cout﹤﹤"Test.fun="﹤﹤endl;}   } ;   void main( ){   Base a;   Test *p; p=&a;   }

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

31.在下面程序横线处填上适当内容,使程序执行结果为:40:15   程序如下:   #include ﹤iostream.h﹥   template ﹤class T﹥   T func(T x,T y){   if(sizeof(T)==8)   return _________;   else   return _________;   }   void main( ){   cout ﹤﹤func(8, 5)﹤﹤":"﹤﹤func( 5.0, 10.0)﹤﹤endl;   int d; cin ﹥﹥d;   }

32.在下面程序横线处填上适当内容,使程序执行结果为:   x=0,y=0   x=1,y=2   x=10,y=20   程序如下:   #include ﹤iostream.h﹥   class Sample   {   int x, y;   public:   Sample( ){_________}   Sample(_________){x=a;y=b;}   void disp( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;   }   };   void main( )   {   Sample s1, s2(1, 2), s3(10, 20);   Sample *pa[3]={&s1, &s2, &s3};   for(int i=0;i﹤3;i++)   pa[i]-﹥disp( );   }

33.在下面程序横线处填上适当内容,使程序执行结果为:   n=30   程序如下:   #include ﹤iostream.h﹥   template ﹤class T﹥   class Test   {   T n;   public:   Test( ){ }   Test(T i){n=i;}   Test﹤T﹥_________(const Test﹤T﹥&s)   {   static Test﹤T﹥temp;   _________;   return temp;   }   void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;}   } ;   void main( )   {   Test ﹤int﹥t1(4),t2(5),t3;   t3=t1+t2;   t 3.disp( );   }

34.在下面程序横线处填上适当内容,使程序执行结果为:   n=2,sum=2   n=3,sum=5   n=5,sum=10   程序如下:   #include ﹤iostream.h﹥   class Test   {   int n;   static int sum;   public:   Test(int x){n=x;}   void add( ){_________;}   void disp( )   {   cout﹤﹤{"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl;   }   } ;   int _________=0;   void main( )   {   Test a(2),b(3),c(5);   a.add( );   a.disp( );   b.add( );   b.disp( );   c.add( );   c.disp( );   }

35.在下面程序中的横线处填上适当内容,使程序完整   #include﹤iostream.h﹥   _________   class A   {   int i;   public:   int set(B&);   int get( ){return i;}   A(int x){i=x;}   } ;   class B   {   int i;   public:   B(int x){i=x;}   _________ A;   } ;   int A:: set(B&b)   {   return i=b.i;   }   void main( )   {   A a(1);   B b(2);   cout﹤﹤a.get( )﹤﹤",";   a.set(b);   cout﹤﹤a.get( )﹤﹤endl;   }

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

41.下面程序中A是抽象类,其输出是什么?   #include ﹤iostream.h﹥   class A{   public:   virtual void printMe( ){cout﹤﹤"This is class A printing. "﹤﹤endl;};   } ;   class B: public A{   public:   void printMe( ) {cout ﹤﹤ "This is class B printing. "﹤﹤endl;}   } ;   class C: public B{   public:   void printMe( ) {cout ﹤﹤"This is class C printing. "﹤﹤endl;}   } ;   void print(A a)   {   a.printMe( );   }   void main( )   {   B b;   C c;   print(b); print(c);   }

42.写出此程序的执行结果:   #include ﹤iostream.h﹥   template﹤class T﹥   T func(T x,T y){   if(sizeof(T)==8)   return x+y;   else   return x*y;   }   void main( ){   cout ﹤﹤func(8,5)﹤﹤":"﹤﹤func( 5.0, 10.0)﹤﹤endl;   int d; cin﹥﹥d;   }

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

51.设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin( )(处理存入账),bankout( )(处理取出账)和disp( )(输出明细账)请完成函数的实现。   本题程序如下:   #include ﹤stdio.h﹥   #include ﹤string.h﹥   #define Max 100   class Bank   {   int top;   char date[Max][10]; //日期   int money[Max]; //金额   int rest[Max]; //余额   static int sum; //累计余额   public:   Bank( ){top=0;}   void bankin(char d[ ],int m){…}   void bankout(char d[ ],int m){…}   void disp( ){…};   } ;

更多资料

15044《马原》2026年10月考前10页纸

语文诗歌阅读答题模板

2025年10月自考 00037《美学》真题及答案解析

温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
资料下载
  • 2025年4月自考 00058《市场营销学》 真题及答案解析

    下载
  • 2025年10月自考 00058《市场营销学》 真题及答案解析

    下载
  • 00159《高级财务会计》通关宝典12章

    下载
  • 00261《行政法学》知识集锦(2023版教材)

    下载
相关阅读
查看更多