1、全国自考C程序设计试题全国2012年1月自考C+程序设计试题课程代码: 04737一、单项选择题 ( 本大题共 20小题,每小题 1 分,共 20 分) 在每小题列出的四个备选项中只有一个是符合题目要求的, 请将其代码填写在题后的括 号内。错选、多选或未选均无分。1.如声明对象数组,则下列描述正确的是 ( )A.对每个元素均调用一次构造函数B.部分元素调用构造函数,其它元素不需调用C.均不需要调用构造函数D.只是首元素调用构造函数2.( )B.相同对象D.不确定22, 59, 70 三者中最大值,下列不同对象调用同一成员函数时, this 指针指向A.不同对象C.无对象3.设存在函数 intm
2、ax(int , int) 返回两参数中较大值,若求表达式正确的是 ( )A.70);max(59 , 70) ;59);int m=max(22 , max(59 ,B.int m=max(max(22 , 59),C.int m=max(max(22 , 70),D.以上皆正确4.一个类可拥有多少个构造函数 ( )B.1个D.以上皆对A.0 个 C.1 或多个5.在编译指令中,嵌入指令是指 ( )A.#includeC.#if6. 设存在数组a,其长度为Len,下列哪项操作是将 a中元素复制到数组 b中()A.reverse(a+a, Len, b); B . sort( a, a+Len
3、, b);C.find(a, a+Len, b); D.copy(a , a+Len, b);7.下列哪个要素不是面向对象的关键要素 ( )A.模块化 B.抽象性C.封装性 D.继承性8.下列对于类的描述错误的是 ( )A.类要先声明后使用B.类是具有唯一标识的实体C.两个类可以使用同一个名称D.( )B.实参是形参的备份D .形参和实参无联系 ( )组成类的不仅有数据,还可以有对数据进行操作的函数9.使用引用调用方式将实参传给形参,下列说法正确的是A.形参是实参的备份C.形参和实参共享同一对象10.关于对象的性质,下列描述错误的是A.同一类对象之间可相互赋值B.不能使用对象数组C.对象可以用
4、作函数参数D.一个对象可以用作另一个类的成员11.类的私有成员可在哪里被赋值 ( )A.类体中 B.该类的成员函数中a 中各元素 ( )B .sort(a , a +Len) ; D.copy(a, a+Len, b);C.A和B D.以上都不是1 2.设存在数组a,其长度为Len,则下列哪个泛型算法用于反转A.reverse(a , a +Len) ;C.find(a , a+Len, value);13.用于标识八进制常量的前缀或后缀是 ( )B. 后缀 L 或 1 D. 前缀 Ox)A. 无C.前缀零14.派生类中继承的基类成员初始化如何进行 (A.由派生类构造函数调用基类的构造函数进行
5、B.由派生类构造函数进行C.由基类构造函数进行,无需派生类构造函数调用D.以上皆不正确1 5.对于多重继承,下列描述正确的是B.每个基类可使用不同派生方式D. 只能是 protected 派生A.所有基类使用相同的派生方式C.只能是public派生16.下列关于类的权限描述错误的是 (A.类本身的成员函数可以访问自身的任何成员B.类的对象可以访问该类的所有成员C.普通函数不能直接访问类的公有成员,必须通过成员函数对其访问D.一个类可以将另一个类的对象作为成员17.B.析构函数D .不与任何函数一起工作 ( )B.封装D.多态性( )运算符delete与哪个函数一起运行()A. 构造函数C.主函
6、数18.一个类可以获得另一个类的特性的机制称为A. 抽象C.继承19.使用下列哪个格式控制符可设置转换十六进制为十进制A.B.octD.endldecC.hex20.对引用调用描述正确的是 ( )A .分配新存储空间B.修改已存储空间的名称为引用名C.引用名与已存在存储空间无任何关联D.将引用名标识符与一块已存在储区域相关联,没有分配新存储空间二、填空题 ( 本大题共 20 小题,每小题 1 分,共 20 分) 请在每小题的空格中填上正确答案,错填、不填均无分。21.公共派生中,基类的公有成员在派生类中是 。22.a,相应的 C+语句是若要使用标准输入流机制从键盘输入一个整数赋给整型变量。23
7、.UML 中对象行为之间的动态关系是通过对象行为之间的依赖关系表现的,称之为24.C+ 函数中按引用调用传递参数时使用 作为参数。25.在 C+ 中除具有 语句和 switch 语句的函数外,其它函数都可以说明为内联函数。26.C+ 中规定模板以 关键字和一个形参表示开头。27.构造函数不能被继承,一个派生类只能调用它的 基类的构造函数。28.vector 类中用于获取存放的元素个数的方法是29.C+中istream类的直接基类是 。30.要关闭一个文件输出流对象 myFile,所用的C+语句是.31.执行下列代码double pi=3.141592 coutsetprecision(2)pi
8、 ;程序的输出结果是 。32.在私有派生中,基类的权限为 private 的成员,在派生类中33.C+总共有3种文件流,分别是输入文件流、输出文件流和34.C+使用流进行输入输出,其中能捕获键盘输入的对象是35. 在vector类中删除向量中最后一个对象的方法是 _36.函数重载可使一个函数名具有多种功能,称这种特性为 。37.C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是引进了 概念。38. 指令定义一个标识符及串,在源程序中每次遇到该标识符时,编译器均用定义的串代替之。39.在 C+ +标准输出方式中,要设置输出数据字段宽度 width 所使用的操控符是 _40.设有定
9、义int x ; float y ;,贝U 10+x+y值的数据类型是三、改错题 (本大题共 5小题,每小题 2分,共 10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.#includemain()int x=9 , y=8 , z=7; const int * p=z ; cout * pendl ;42.#include main()int x=8 , y=6; const int*const p= x; p=y;cout* pendl ; 43.#include main() folat p ; p=new folat5 ; for(int i=0 ; i
10、* (p+i) ; cout * (p+i)endl ; delete p;44.templateT f(T x)T y;y=x+T ;return y ;45.#includeclass pointint 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);couta.getx()endl ;四、完成程序题 (本大题共 5小题,每小题 4分,共 20 分)46.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。 x=2
11、, y=3#includeclass Sampleint x ,y;public :Sample( )x=y=0 ;Sample(int a , int b)x=a;void disp( )coutx=x , y=ydisp() ; 47.在下划线处填上适当的语句,使程序的输出结果如下:n=30#include template class SampleT n;public :Sample( ) Sample(T i) Sample&operator+(const Sample&) ; void disp( )coutn=nendl ; ;templateSample&Sample :oper
12、ator+(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#includeclass Sampleint A1010 ;public :int &operator()(int , int);int &Sample:operator()(int x , int y) return Axy ;void main()Sample a;int
13、 i , j;for(j=0 ;j10 ;j+)for(i=0 ;il0 ;i+)couta(i ,1) ;coutendl ;49.在下划线处填上适当的句子,完成函数的定义。#includeclass Sampleint x ;public :Sample( ) ; x=a ; x=a.x+ +10; void disp( )coutx=xendl ; ;void main( )Sample s1(2), s2(s1);s1.disp( ) ;s2.disp( ) ;50.输入一个字符串,将其逆序后输出。#includeusing namespace std;void main();i+,j
14、char a50 ; memset(a, 0, sizeof(a) ; int i=0 , j; char t ; cin.getline(a , 50, n; for(i=0 , j=strlen(a)-1 ;i t=ai ; a j=t ; coutaendl ;五、程序分析题 (本大题共 4小题,每小题 5分,共 20 分)51.(给出下面程序的输出结果#include class exampleint a ; public :example(int b)a=b+ ; void print( )a=a+1 ; couta ; void print( )constcouta ; ;void
15、 main( )example x(3) ;const example y(2) ;x.print( ) ;y.print( ) ;52.给出下面程序的输出结果#includeclass Sampleint x ,y;public :Sample( )x=y=0 ; Sample(int a , int b)x=a ; y=b; Samp le()if(x=y)coutx=yendl ;elsecoutx!=yendl ;void disp()coutx=x ,y=yendl ;void main()Sample sl(2, 3);s1.disp();53.给出下面程序的输出结果#includ
16、eclass Sampleint n ;static int sum ;public :Sample(int x)n=x ;void add( )sum+=n ; void disp( )coutn=n ,sum: sumendl ;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.给出下面程序的输出结果#includeclass A private : friend class B ;A(int val=0) : data
17、(val) , use(1)int use, data; class B public : A*pa;B(int val=0) : pa(new A(val) B( )if( - pa - use=O)delete pa; B(Brhs) + + rhs -use; pa=rhs.pa; B operator=(B rhs);A*operator -( )return pa ; void Display( ) coutdata=data ,use=useuse = =0)delete pa;+ + rhs - use;pa=rhs.pa;return * this ; int main( )B
18、 b1(1) , b2(b1),b3(3);b1.Display( ) ; b2.Display( ) ; b3.Display( ) ; b3=b1; b1.Display( ) ; b3.Display( ) ; return 0 ;六、程序设计题 (本大题共 1 小题,每小题 10分,共 10分)55.process 为学生信息已知一个 student 类,包括学姓名,成绩和等级,不含任何成员函数 处理类 .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 类中的两个函数:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1