违法信息举报 客服热线:400-118-7898
广告
?
专接本栏目测试广告

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

自考 责任编辑:彭雅倩 2019-06-24

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

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

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

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

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

A.对每个元素均调用一次构造函数
B.部分元素调用构造函数,其它元素不需调用
C.均不需要调用构造函数
D.只是首元素调用构造函数

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

A.不同对象
B.相同对象
C.无对象
D.不确定

3.设存在函数int max(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.以上都不是

12.设存在数组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或l
C.前缀零
D.前缀0x

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

A.由派生类构造函数调用基类的构造函数进行
B.由派生类构造函数进行
C.由基类构造函数进行,无需派生类构造函数调用
D.以上皆不正确

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

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分)请在每小题的空格中填上正确答案。错填、不填均无分。

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

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

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

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

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

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

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

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

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

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

111.执行下列代码   double pi= 3.141592   cout﹤﹤setprecision(2)﹤﹤pi; 程序的输出结果是______。

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

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

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

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

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

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

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

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

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

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

21.#include ﹤iostream.h﹥   main( ){   int x=9,y=8,z=7;   const int * p=z;   cout﹤﹤ * p﹤﹤endl;   }

22.#include ﹤iostream.h﹥   main( ){   int x=8,y=6;   const int*const p=&x;   p=&y;   cout﹤﹤* p﹤﹤endl;   }

23.#include ﹤iostream.h﹥   main( ){   folat p;   p=new folat[5];   for(int i=0;i﹤5;i++)   {cin﹥﹥ * (p+i);cout﹤﹤ * (p+i)﹤﹤endl;}   delete p;   }

24.template﹤class T﹥   T f(T x){   T y;  y=x+T;   return y;   }

25.#include ﹤iostream.h﹥   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﹤﹤a.getx( )﹤﹤endl;   }

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

31.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。   x=2,y=3   #include ﹤iostream.h﹥   class Sample   {   int x,y;   public:   Sample( ){   x=y=0;   }   Sample(int a,int b){   x=a;   (__________)   }   void disp( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;   }   }(____­_______)   void main( )   {   Sample s(2,3), *p=&s;   p-﹥disp( );   }

32.在下划线处填上适当的语句,使程序的输出结果如下:   n=30   #include ﹤ iostream.h ﹥   template﹤ class T ﹥   class Sample   {   T n;   public:   Sample( ){ }   Sample(T i){_________}   Sample﹤T﹥&operator+(const Sample﹤T﹥&);   void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;}   };   template﹤class T﹥   Sample﹤T﹥&Sample﹤T﹥::operator+(const Sample﹤T﹥&s)   {   static Sample﹤T﹥temp;   return temp;   }   void main( )   {   Sample﹤int﹥s1(10),s2(20),s3;   s3=s1+s2;   s 3.disp( );   }

33.在下划线处填上适当的语句,使程序的输出结果如下:   1 2 3 4 5 6 7 8 9 10   #include ﹤iostream.h﹥   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﹤10;i++)   cout﹤﹤a(i, 1)﹤﹤ " ";   cout﹤﹤endl;   }

34.在下划线处填上适当的句子,完成函数的定义。   #include ﹤iostream.h﹥   class Sample   {   int x;   public:   Sample( ){ };   _________{x=a;}   _________{x=a.x+++10;}   void disp( ){cout﹤﹤"x="﹤﹤x﹤﹤endl;}   };   void main( )   {   Sample s1(2),s2(s1);   s 1.disp( );   s 2.disp( );   }

35.输入一个字符串,将其逆序后输出。   #include ﹤iostream﹥   using namespace std;   void main( )   {   char a[50];memset(a,0,sizeof(a));   int i=0,j;   char t;   cin.getline(a,50,' ';   for(i=0, j=strlen(a)-1;i﹤_________;i++, j-- )   {   t=a[i];   a[j]=t;   }   cout﹤﹤a﹤﹤endl;   }

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

41.给出下面程序的输出结果   #include ﹤iostream.h﹥   class example   {   int a;   public:   example(int b){a=b++;}   void print( ){a=a+1;cout﹤﹤a﹤﹤" ";}   void print( )const{cout﹤﹤a﹤﹤"";}   };   void main( )   {   example x(3);   const example y(2);   x.print( );   y.print( );   }

42.给出下面程序的输出结果   #include ﹤iostream.h﹥   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"﹤﹤endl;   else   cout﹤﹤"x!=y"﹤﹤endl;   }   void disp( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;   }   };   void main( )   {   Sample s1(2,3);   s 1.disp( );   }

43.给出下面程序的输出结果   #include ﹤iostream.h﹥   class Sample   {   int n;   static int sum;   public:   Sample(int x){n=x;}   void add( ){sum+=n;}   void disp( )   {   cout﹤﹤"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl;   }   };   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( );   }

44.给出下面程序的输出结果   #include ﹤iostream.h﹥   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="﹤﹤pa -﹥data﹤﹤",use="﹤﹤pa -﹥use﹤﹤endl;   }   };   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);   b 1.Display( );   b 2.Display( );   b 3.Display( );   b3=b1;   b 1.Display( );   b 3.Display( );   return 0;

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

51.已知一个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类中的两个函数:

更多资料

00058《市场营销学》14章复习重点

15044《马原》名词解释汇总

00537中国现代文学史第二章 30年代文学

温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

自考备考资料免费领取

去领取