全国2011年10月自学考试C加加程序设计试题和答案
- 格式:doc
- 大小:228.50 KB
- 文档页数:12
2011年10月全国自考高级语言程序设计试题高级语言程序设计(一) 试题课程代码:00342一、单项选择题(本大题共1 5小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.自定义标识符由字母、数字或下划线组成,且第一个字符必须是( )A.数字B.字母或数字C.数字或下划线D.字母或下划线2.运算符优先级符合由高到低排列的一组是( )A.+、!=、&&、=B.&&、!=、+、=C.!=、+、=、&&D.&&、=、!=、+3.转义字符中正确的是( )A.'\'B. '\xyz'C. '\\'D. '\820'14.下列程序段执行后x、y和z的值分别是( )int x=10,y=20,z=30;if(x>y)z=x;x=y;y=z;A.10,20,30B.20,30,30C.20,30,10D.20,30,205.下列程序段执行后的输出结果是( )int k=4,a=3,b=2,c=l;printf("%d\n",k<a? k:c<b? c:a);A.1B.2C.3D.46.关于for(表达式1;表达式2;表达式3),叙述正确的是( )A.表达式1不可以缺省B.表达式2不可以缺省C.表达式3不可以缺省D.三个表达式都可以缺省7.设int *p[4];,则标识符p是( )A.整型数组名B.指针数组名C.指针函数名D.指向整型变量的指针8.在循环结构中,continue语句的作用是( )A.继续执行本次循环B.提前退出多重循环C.提前结束本次循环D.提前退出本重循环9.数组定义及初始化正确的是( )A.char a[5]={};B.int a[5]={0,1,2,3,4,5};C.char a={"string"};D.char a[]={'0','1','2','3','4','5'};1O.设int m;,与while(!m)等价的是( )A.while(m!=0)B.while(m==1)C.while(m==O)D.while(m!=1)11.设char s1[]="12345",s2[]="1234";,执行语句printf("%d\n",strlen(strcpy(s1,s2)));后的输出结果是( )A.4B.5C.9D.1O12.下列不属于C语言数据类型的保留字是( )A.realB.voidC.floatD.double13.设int i,j=7,*p=&j;,与赋值语句i=j;等价的是( )A.i=&p;B.p=*&j;C.p=&j;D.i=*p:14.正确表示数学关系式x≥y≥z的C语言表达式是( )A.x>=y>=zB.(x>=y)&&(y>=z)C.(x>=y)&(y>=z)D.(x>=y)||(y>=z)15.设struct student{char name[10];char sex;}stu;,则sizeof(stu)的值是( )A.2B.1OC.11D.12二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。
2009年全国自考C++程序设计模拟试卷(一)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1. 编写C++程序一般需经过的几个步骤依次是()A. 编辑、调试、编译、连接B. 编辑、编译、连接、运行C. 编译、调试、编辑、连接D. 编译、编辑、连接、运行答案:B解析:(P21)经过编辑、编译、连接和运行四个步骤。
编辑是将C++源程序输入计算机的过程,保存文件名为cpp。
编译是使用系统提供的编译器将源程序cpp生成机器语言的过程,目标文件为obj,由于没有得到系统分配的绝对地址,还不能直接运行。
连接是将目标文件obj转换为可执行程序的过程,结果为exe。
运行是执行exe,在屏幕上显示结果的过程。
2. 决定C++语言中函数的返回值类型的是()A. return语句中的表达式类型B. 调用该函数时系统随机产生的类型C. 调用该函数时的主调用函数类型D. 在定义该函数时所指定的数据类型答案:D解析:(P51)函数的返回值类型由定义函数时的指定的数据类型决定的。
A项的表达式的值要转换成函数的定义时的返回类型。
3. 下面叙述不正确的是()A. 派生类一般都用公有派生B. 对基类成员的访问必须是无二义性的C. 赋值兼容规则也适用于多重继承的组合D. 基类的公有成员在派生类中仍然是公有的答案:D解析:(P136)继承方式有三种:公有、私有和保护。
多继承中,多个基类具有同名成员,在它们的子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。
赋值兼容规则是指派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。
基类中的公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。
4. 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A. 类B. 对象C. 函数体D. 数据块答案:A解析:(P39)类即数据和操作的组合体,数据是类的静态特征,操作是类具有的动作。
C++程序设计1、声明个CPU类,包含等级(rank),频率(frequency),电压(voltage)属性,有两个公有成员函数run(函数功能:输出“cpu正在运行”),stop(函数功能:输出“cpu停止运行”)。
其中rank为枚举型CPU_Rank,声明为enumCPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage为double 型电压值。
编写构造函数和析构函数,在主函数中显示它们的调用顺序。
2、定义复数类COMPLEX,并用成员函数为复数类COMPLEX重载加、减及赋值运算符操作。
3、写一个程序,定义一个抽象类Shape,由它派生3个类:Square(正方形)、Trapezoid(梯形)和Triangle三角形。
用虚函数分别计算几种图形面积、并求它们的和。
要求用基类指针数组,使它每一个元素指向一个派生类对象。
4、已知交通工具类定义如下。
要求:(1)实现这个类;(2)定义并实现一个小车类car,是它的公有派生类,小车本身的私有属性有载人数,小车的函数有init(设置车轮数,重量和载人数),getpassenger(获取载人数),print(打印车轮数,重量和载人数)。
5、声明一个车(vehicle)基类,具有maxspeed、weight成员变量,run、stop成员函数(简单输出提示“车正在行进”,“车停止”),由此派生出自行车类(bicycle)、汽车类(motorcar)。
自行车类有高度(height)属性,汽车(motorcar) 类有座位数(seatnum)。
从bicycle和motorcar 派生出摩托车类(motorcycle),在继承过程中,注意把vehicle 设置为虚基类,同时编写各个类的构造函数和析构函数,在主函数中建立各个类对象,观察执行情况。
6、定义类X、Y、Z,函数h(X *),满足:类X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对X的成员i加1;类Z是类X的友元类,其成员函数f(X *)实现对X的成员i加5;函数h(X *)是X的友元函数,实现对X的成员i加10。
C++课后练习题答案(待完善版)一、说明:分析程序写运行结果题目的答案是经过VC++6.0运行的,同学们可以自己尝试运行。
如发现所有题目的答案有错误请及时共享。
祝大家考试快乐!!(黑体字问题为未解决问题)第二章●C++进行强制类型转换时有几种格式?⏹答:✧(数据类型)表达式数据类型(表达式)●字符串常量与字符常量有什么区别?'c'和"c"有什么区别?⏹答:✧字符串在内存中的存放形式是:按串中字符的排列次序顺序存放对应字符的ASCII码,每个字符占一个字节,并在字符串末尾添加'\0'作为结束标记。
因此,字符常量所占用的内存字节数比字符串中字符的个数多1。
✧'c'是字符常量,"c"是字符串常量。
●假设程序中有“int a[20],*pa=a;”的语句,要表示数组元素a[i]有哪几种方法?⏹答:✧a[i]、*(a+i)、p[i]、*(p+i)●写出程序的运行结果:(1)#include <iostream.h>int a=100;void main(){int a=200;cout<<a<<','<<::a<<endl;}(2)#include <iostream.h>#include <iomanip.h>void main(){int i,j;for(i=4;i>=1;i--){cout<<setw(i+5)<<' ';for(j=i;j<=4;j++)cout<<'*'<<' ';cout<<endl;}}⏹答:(1)200,100(2)** ** * ** * * *●编程求50~1000之间的,各位上的数字之和等于5的整数。
C++程序设计真题2011年10月(总分:100.00,做题时间:90分钟)一、单项选择题(总题数:20,分数:20.00)1.C++中注释“/*”的有效范围是( )A.从“/*”开始到行尾 B.从“/*”开始后不终止C.从“/*”开始到“//”为止 D.从“/*”开始到“*/”为止(分数:1.00)A.B.C.D. √解析:[解析] C++有两种注释方式:一种是沿用C语言的从“/*”开始,到“*/”结束的注释方式;另一种是更灵活的注释方式“//”,注释的有效范围从“//”至本行结束。
2.如想使用std命名空间,正确的程序语句是( )A.using std; B.namespace std;C.using namespace; D.using namespace std;(分数:1.00)A.B.C.D. √解析:3.下列选项中不是C++关键字的是( )A.bool B.intC.float D.var(分数:1.00)A.B.C.D. √解析:4.用于标识长整型常量的前缀或后缀是( )A.无前后缀 B.后缀L或lC.前缀零 D.前缀0x(分数:1.00)A.B. √C.D.解析:[解析] 后缀L或l用于标识长整型常量,前缀零用于标识八进制常量,前缀0x用于标识十六进制常量。
5.对于new类型名[size]描述正确的是( )A.申请可以存储size个字节的空间B.申请可以存储1个该数据类型的空间C.申请可以存储size个该数据类型对象的空间D.申请可以存储1个字节的空间(分数:1.00)A.B.C. √D.解析:6.使用下列哪个流格式控制符可以设置转换基数为十六进制( )A.dec B.octC.hex D.endl(分数:1.00)A.B.C. √D.解析:[解析] dec:设置转换基数为十进制;oct:设置转换基数为八进制;hex:设置转换基数为十六进制;endl:输出一个换行符并刷新流。
7.构造函数用于( )A.定义对象 B.初始化对象C.清除对象 D.普通计算(分数:1.00)A.B. √C.D.解析:8.设函数void swap(int,int)将交换两形参数值,如有两整型变量int a=10;int b=15;则执行swap(a,b);之后,a,b值分别为( )A.15,10 B.15,15C.10,15 D.10,10(分数:1.00)A.B.C. √D.解析:[解析] 函数void swap(int,int)使用对象作为函数参数,即将实参对象的值传递给形参对象,这种传递是单向的。
2011C++程序答案一、选择题1. P42. D P53.D 参见附表关键字4. B P95.C P106. c P187.B P75 注意考析构函数51 9.B 同题8 10.DP56 11.考函数的默认参数的调用形式,参见P55 12 D P63 13 B14.B P79 15.B P81 16.B P105 17. B P108 18.D P113 19.C P135 20.C P213二、填空题21. 递归22. operator+() P190 23.class a{ virtual int Fun(int ,char) =0} P173 23. .h P4 25. vector<int>B(20) P151 26. 私有成员P137 27.string类型P42 28. 先声明后使用P6 29.const P115 30 分析P91 31. 拷贝构造函数P80 32. private P69 33 .操作P95 34.8 35. char *fun(char ,int& n) P57 36. swap() P40 37 运算符重载38.29 1001 P19 39.把x 赋给y,然后x自加1 40 int& y=x P11三、改错题41、delete[] p; 简单的数据类型分配去掉[]即可。
42、f<int >a; 把int改成float型43、public:void test(int a,int b ){x=a,y=b}; 在x,y前面加test::44、p.get() 改为p->get()。
因为是指针访问只能用->45、a.init(20,30),改成a.int(20四、程序分析题46、int n,float f t.f1 47. cout<<x<<”,”<<y ; a.initxy(11,77)48. sample &s sample s1, sample s249 cout<<*p; cout<<”a[”<<i<<”]”<<a[i];50. int a,int b *p=s五、程序分析题51n=24n=23n=2252Initializing88Entering main全国2011年10月高等教育自学考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的-请将其代码填写在题后的括号内。
学历类《自考》自考专业(计算机应用)《C ++程序设计》考试试题及答案解析姓名:_____________ 年级:____________ 学号:______________1、以下基类中的成员函数表示纯虚函数的是( )A 、virtualvoidtt( )=0B 、voidtt(int)=0C 、virtualvoidtt(int)D 、virtualvoidtt(int){}正确答案:A答案解析:暂无解析2、对于int*pa [5]; 的描述,正确的是( )A 、pa 是一个指向数组的指针,所指向的数组是5个int 型元素B 、pa 是一个指向某个数组中第5个元素的指针,该元素是int 型变量C 、pa [5]表示某个数组的第5个元素的值D 、pa 是一个具有5个元素的指针数组,每个元素是一个int 型指针正确答案:D答案解析:暂无解析3、C++的继承性允许派生类继承基类的( )A 、部分特性,并允许增加新的特性或重定义基类的特性B 、部分特性,但不允许增加新的特性或重定义基类的特性C 、所有特性,并允许增加新的特性或重定义基类的特性D 、所有特性,但不允许增加新的特性或重定义基类的特性正确答案:C答案解析:暂无解析4、使用地址作为实参传给形参,下列说法正确的是( )A 、实参是形参的备份B 、实参与形参无联系C 、形参是实参的备份D 、实参与形参是同一对象正确答案:D答案解析:暂无解析5、在私有继承的情况下,基类成员在派生类中的访问权限( )A 、受限制B、保持不变C、受保护D、不受保护正确答案:A答案解析:暂无解析6、C++语言中所有在函数中定义的变量,连同形式参数,都属于( )A、全局变量B、局部变量C、静态变量D、函数正确答案:B答案解析:暂无解析7、在类中说明的成员可以使用关键字的是( )A、publicB、externC、cpuD、register正确答案:A答案解析:暂无解析8、C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是( )A、增加了一些新的运算符B、允许函数重载,并允许设置缺省参数C、规定函数说明符必须用原型D、引进了类和对象的概念正确答案:D答案解析:暂无解析9、假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb;},则执行Ax(4,5);语句后,和的值分别为( )A、3和15B、5和4C、4和20D、20和5正确答案:C答案解析:暂无解析10、在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限( )A、受限制B、保持不变C、受保护D、不受保护正确答案:B答案解析:暂无解析11、构造函数不具备的特征是( )A、构造函数的函数名与类名相同B、构造函数可以重载C、构造函数可以设置默认参数D、构造函数必须指定类型说明正确答案:D答案解析:暂无解析12、语句ofstreamf(“”,ios::app|ios::binary)?的功能是建立流对象f,试图打开文件并与之连接,并且( )A、若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B、若文件存在,将其置为空文件;若文件不存在,打开失败C、若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D、若文件存在,打开失败;若文件不存在,建立一个新文件正确答案:A答案解析:暂无解析13、友元关系不能( )A、提高程序的运行效率B、是类与类的关系C、是一个类的成员函数与另一个类的关系D、继承正确答案:D答案解析:暂无解析14、所谓多态性是指( )A、不同的对象调用不同名称的函数B、不同的对象调用相同名称的函数C、一个对象调用不同名称的函数D、一个对象调用不同名称的对象正确答案:B答案解析:暂无解析15、关于this指针使用说法正确的是( )A、保证每个对象拥有自己的数据成员,但共享处理这些数据的代码B、保证基类私有成员在子类中可以被访问。
c++试题及答案自考一、选择题(每题2分,共20分)1. C++中,以下哪个关键字用于定义类?A. structB. unionC. enumD. typedef答案:A2. 在C++中,下列哪个运算符用于引用传递?A. *B. &C. %D. #答案:B3. 下列哪个选项是C++中定义常量的正确方式?A. const int a = 5;B. static int a = 5;C. final int a = 5;D. define int a = 5;答案:A4. 在C++中,哪个函数用于将字符串转换为浮点数?A. atoiB. atofC. itoaD. sprintf答案:B5. 下列哪个选项是C++中正确的继承方式?A. publicB. protectedC. privateD. all of the above答案:D6. 在C++中,下列哪个关键字用于定义虚函数?A. virtualB. overrideC. finalD. abstract答案:A7. C++中,下列哪个关键字用于定义纯虚函数?A. virtualB. pureC. abstractD. final答案:A8. 在C++中,下列哪个关键字用于定义静态成员变量?A. staticB. constC. externD. volatile答案:A9. C++中,下列哪个选项是正确的函数声明?A. void function();B. int function;C. void function(int);D. all of the above答案:D10. 在C++中,下列哪个选项是正确的文件包含指令?A. #include <iostream>B. #include "iostream"C. #include "iostream.h"D. all of the above答案:A二、填空题(每题2分,共20分)1. C++中,______关键字用于定义友元函数。
全国2011年10月自学考试C加加程序设计试题和答案课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的-请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.C++中注释“/*”的有效范围是()A.从“/*”开始到行尾B.从“/*”开始后不终止C.从“/*”开始到“//”为止D.从“/*”开始到“*/”为止2.如想使用std命名空间,正确的程序语句是()A.using std;B.namespace std,C.using namespace;D.using namespace std;3.下列选项中不是C++关键字的是()A.bool B.intC.float D.var4.用于标识长整型常量的前缀或后缀是()A.无前后缀B.后缀L或lC.前缀零D.前缀0x5.对于new类型名[size]描述正确的是()A.申请可以存储size个字节的空间B.申请可以存储1个该数据类型的空间C.申请可以存储size个该数据类型对象的空间D.申请可以存储1个字节的空间6.使用下列哪个流格式控制符可以设置转换基数为十六进制()A.dec B.octC.hex D.endl7.构造函数用于()A.定义对象B.初始化对象C.清除对象D.普通计算8.设函数void swap(int,int)将交换两形参数值,如有两整型变量int a=10;int b=15,则执行swap(a,b);之后,a,b值分别为()A.15,10 B.15,15C.10,15 D.10,109.设函数void subone (int)将形参值减1,如有整形变量int b=10;则执行subone(b)后,b的值为()A.9 B.10C.11 D.未知10.C++中函数返回值类型不可以是()A.引用B.指针C.结构D.数组11.声明函数int Func(int a=0,int b=3,int c=4)相当于声明了几个函数形式()A.1 B.2C.3 D.412.C++中专门定义一个仅在模板中使用的参数类型的关键字是()A.const B.inlineC.short D.typename13.对于类中的成员,使用private修饰,表明该成员的访问权限是()A.公有的B.私有的C.保护的D.不可见的14.使用new创建的对象,对其生命周期描述正确的是()A.由系统决定B.由用户控制C.全局生命周期D.永久存在15.析构函数被调用的时间点是()A.对象被创建时B.对象被销毁时C.不会被调用D.主函数被调用时16.对象的构造函数调用顺序取决于()A.对象成员在初始化列表中给出的顺序B.对象成员在类中声明的顺序C.对象成员与在初始化列表中顺序和类中声明顺序均有关D.随机顺序17.下列对静态成员函数描述正确的是()A.静态成员函数中可使用1个this指针B.静态成员函数中不能使用this指针C.静态成员函数中可使用多个this指针D.静态成员函数中只可使用1个that指针18.友元的声明可出现在()A.类的私有部分B.类的公有部分C.类的保护部分D.类的任何部分19.在下列派生中,子类和父类间是isa关系的是()A.private B.protectedC.public D.publish20.面向对象不仅进行功能抽象,还要进行()A.动态抽象B.消息抽象C.数据抽象D.算法抽象二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
错填、不填均无分。
21.在调用函数f1()的过程中,又调用了函数f1(),这种调用称为________调用。
22.C++中重载“+”运算符的函数名是________。
23.设为类A添加一个纯虚函数Fun,其第一个参数类型为整型,第二个参数类型为字符型,函数返回值类型为整型。
实现此操作的语句是________。
24.C++程序的头文件和源程序文件扩展名分别为________和. cpp。
25.在C++中,利用向量类模板定义一个具有20个int类型的向量B,实现此操作的语句是:________。
26.通过私有派生,基类的私有和不可访问成员在派生类中是不可访问的,而公有和保护成员这时就成了派生类的________。
27.字符串类型的变量一般用________和字符数组类型的变量表示。
28.在一个C++程序中,每个变量都必须遵循________的原则。
29.在常成员函数里不能更新对象的数据成员,也不能调用该类中没用________关键字修饰的成员函数。
30.UML是一种可视化建模语言,主要用于面向对象的________和建模。
31.复制构造函数采用拷贝方式使用已有对象来建立新对象,又称为________函数。
32.对于C++类中的成员,若未使用访问权限关键字进行说明,默认的权限是________。
33.对象的行为是定义在对象属性上的一组________的集合。
34.设int max(int,int)表示计算两个整数中的最大值,则执行语句“cout << max(max(2,3),max(7,8));”的输出结果是________。
35.函数fun的返回值是字符指针类型,该函数有两个参数,其中一个参数是字符类型,另一个参数是int 类型引用,声明函数fun的原型的语句为________。
36.string类中用于交换两个字符串对象的值的成员函数为________。
37.无论变量x和y是整型还是浮点类型,x*y都表示这两个变量的积,这是典型的________的例子。
38.执行下列代码int a=29,b=1001;cout <<a<< setw(6)<< b << endl;程序输出结果是:________。
39.在C++中,赋值表达式y=x++的含义是________。
40.设有如下定义:int x;若要将整型变量y定义为变量x的引用,则应使用的语句是________。
三、改错题(本大题共5小题,每小题4分,共20分)下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见41. #include < iostream. h >void main( ){float * p;p = new float[ 5 ] ;for( i =0;i <5 ;i + + ){ cin > > * (p + i) ;cout << * (p + i) << endl; }delete [ ] p;}42. #include < iostream.h >template < class T >class f{private: T x,y;public: void fl(T a,T b){x=a;y=b;}T max(){retum(x>y)? x:y;}};void main( ){f <int> a;a. fl(3.5,3.8) ;cout << a. max( ) << endl;}43. #include < iostream. h >class test{private: static int x; int y;public: void testl ( int a, int b) { x = a; y = b; }};void main() {test a;a. testl (2,3) ;}44. #include < iostream, h >class f{private: float x, y;public: void fl ( float a, float b) { x = a; y = b; }f() {x=0;y=0;}void move(float a,float b){x =x +a;y =y-b;}void get ( ) { cout << x <<"<< y << endl; } };void main( ){f *p,a;a. f1(1.6,3.8) ;p=&a;p. get( ) ;}45. #include < iostream. h >class point{int x;public: void init ( int a) { x = a; }int getx( ){ return x;}void setx ( int a) { x = a; }};void main( ){point a;a. init (20,30) ;cout << a. getx( ) << endl;}四、完成程序题(本大题共5小题,每小题4分,共20分)46.完成下面类中成员函数的定义。
class test{private:int nl ;float fl;public:test(int,float f);test(test&);};test::test( ________ ){nl=n; fl=f;}test::test(test&t){nl=t.nl;fl=________;}47.在下面程序中的下划线处填上适当的语句,使程序的输出结果如下:11,7711,77源程序如下:#include<iostream>using namespace std;class base{private:int x,y;public:void initxy(int a,int b){x=a;y=b;}void show(){________}} ;void main(){base a,b;__________a.show();b=a;b.show();}48.在下面程序中的下划线处填上适当的程序,使程序的输出结果如下:x=1,y=2x=30,y=40源程序如下:#include<iostream.h>class Sample{int x,y;public:Sample(){x=y=0;}Sample(int i,int j){x=i;y=j;}void copy(Sample & s);void setxy(int i,int j){x=i;y=j;}void print(){cout<<"x="<<x<<",y="<<y<<endl;}};void Sample::copy (________){x=s.x;y=s.y;}void func(________)){s1.setxy(10,20);s2.setxy(30,40);}void main(){Sample p(1,2),q;q.copy(p);func(p,q);p.print();q.print();}Sample&s}49.在下面程序的下划线处填上正确的语句,使其得到下面的输出结果。