资源描述
全国2014年4月高等教育自学考试
C++程序设计试题
课程代码:04737
本试卷满分100分,考试时间150分钟.
考生答题注意事项:
1.本卷所有试题必须在答题卡上作答。答在试卷上无效。试卷空白处和背面均可作草稿纸。
2.第一部分为选择题。必须对应试卷上的题号使用28铅笔将“答题卡”的相应代码涂黑。
3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。
4.合理安排答题空间。超出答题区域无效。
第一部分选择题
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题
纸”的相应代码涂黑。错涂、多涂或未涂均无分。
1.下列关于类的权限描述错误的是
A.类本身的成员函数可以访问自身的任何成员
B.类的对象只能访问公有成员
C.普通函数可以不通过对象直接访问类的公有成员
D.一个类可以包含另一个类的对象作为成员
2.只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于
A.private B.protected
C.public D.publish
3.面向对象中的“对象”是指
A.行为抽象 B.数据抽象
C.行为抽象和数据抽象的统一 D.行为抽象和数据抽象的对立
4.在类外定义成员函数时,::运算符两侧分别连接
A.返回值类型 函数名 B.返回值类型 类名
C.函数名 类名 D.类名 函数名
5. 设函数int& index(int * a,int i)返回数组a中下标为i的元素,如存在整型数组int Array[]={1,2,3},在执行
index(Array,2)+ +后,Array中各元素值为
A.{0,1,2} B.{l,1,2}
C.{1,2,4} D.{0,2,3}
6.类构造函数定义的位置是
A.类体内或体外 B.只是在类体内
C.只在类体外 D.在类的成员函数中
7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置
A.reverse(a,a+Len,Value); B.sort(a,a+Len,Value);
C.find(a,a+Len,Value); D.copy(a,a+Len,Value);
8.关于对象的性质,下列描述错误的是:
A.同一类对象间可相互赋值 B.可以使用对象数组
C.对象不可以用作函数参数 D.一个对象可以用作另一个类的成员
9.声明一个没有初始化参数的对象,需调用
A.指定参数构造函数 B.拷贝构造函数
C.初始化函数 D.默认构造函数
10.下列运算符不能重载的是
A.! B.sizeof
C.new D.delete
11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是
A.P B.*P
C.&P D.P+1
12.使用下列流格式控制符能输出一个换行符的是
A.dec B.oct
C.hex D.endl
13.下列表达式,能将P声明为常量指针的是
A.const int * P; B.int*const P;
C.const int * const P D.int * P
14.C++程序文件扩展名为
A..cpp B..h
C..lib D..obj
15.对C++中主函数描述正确的是
A.名称为main,可为多个 B.名称不限,可为多个
C.名称为main,必须有且只能有一个 D.名称不限,必须有且只能有一个
16.假定有char * P="Hello";,要输出这个字符串的地址值的正确写法是
A.cout<< *P B.cout<<P
C.cout<<&P D.cout<<(void *)P
17.下列描述错误的是
A.在没创建对象前,静态成员不存在
B.静态成员是类的成员,不是对象成员
C.静态成员不能是虚函数
D.静态成员函数不能直接访问非静态成员
18.对于友元描述正确的是
A.友元是本类的成员函数 B.友元不是本类的成员函数
C.友元不是函数 D.以上皆不正确
19.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为
A.内联函数 B.重载函数
C.递归函数 D.嵌套函数
20.下列默认参数的声明不正确的是
A.int max(int a,int b,int c,int d=0);
B.int max(int a,int b,int c=0,int d=0);
C.int max(int a=0,int b,int c=0,int d=0);
D.int max(int a,int b=0,int c=0,int d=0);
非选择题部分
注意事项:
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共20小题,每小题1分,共20分)
21.C++程序的编译是以___文件___为单位进行的。
22.默认参数是在__函数原型____中说明的,默认参数可以多于一个。
23.通过C++语言中的___派生___机制,可以从现存类中构建其子类。
24.拷贝构造函数使用___引用对象___作为参数初始化创建中的对象。
25.基类的公有成员在通过公有派生得到的子类中访问权限是___公有类型___。
26.要关闭一个输出流对象myFile,所用的C++语句是___myFile.close()___。
27.执行下列代码:double pi=3.1415926;cout<<setprecision(5)<<pi;程序的输出结果是___3.1416___。
28.对象作为函数参数,就是将实参对象的___值___传递给形参对象,这种传递是单向的。
29.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的__初始化____。
30.C++类中的___析构___函数在对象的生存期结束时被自动调用。
31.C++语言中的整数常量有四种:十进制常量、长整型常量、八进制常量和___十六进制常量___。
32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为___实例连接___。
33.声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是___char Fun(int,double)const;___。
34.在C++语言中,利用向量类模板定义一个具有20个int类型且初值为1的向量C,实现此操作的语句是___vector<int>C(20,1)___。
35.执行下列代码:int a=123,b=321;cout<<setw(3)<<a<<b<<endl;程序输出结果是:__123321____。
36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的___地址值___。
37.vector类中用于返回向量中第一个对象的方法是___front()___。
38.C++语言中动态分配内存的关键字是__new____。
39.C++类成员的访问权限有___私有___、公有和保护三种。
40.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是__complex<float>num(2.2,1.3)____。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见
41.#include<iostream.h>
main ( ){
int x=5,y=6;
const int *p=&x;
* p=y; 指向常量的指针P不能进行左值操作
cout<<*p<<endl;
}
42.#include<iostream.h>
class f {
private:T x, y; 模板没有声明
public:f1(T a,T b){x=a;y=b;}
T max( ){return(x>y)?x:y;}
};
main( ) {
f a;
a.f1(1.5,3.8);
cout<<a.max( )<<endl;
}
43.#include<iostream.h>
class point {
private:float x,y;
public:point(float a,float b){x=a;y=b;}
f( ){x=0;y=0;}
void getx( ){cout<<x<<endl;}
void gety( ){cout<<y<<endl;}
};
main( ) {
point a (3.5); 没有定义一个参数的构造函数
a.getx( );
}
44.#include<iostream.h>
class f{
private:float x,y;
float get( ){return x+y;}
public:f1(float a,float b){x=a;y=b;}
};
main( ) {
f a;
a.f1(1,3.8);
cout<<a.get()<<endl; get()函数为私有类型
}
45.#include<iostream.h>
class testl{
private:Int x;
public:testl( ){x=2;}
void set(int a){x=a;}
void get(){cout<<x<<endl;}
};
class test2{
private:int x;
public:test2( ){x=3;}
void set(int a){x=a;}
void get( ){cout<<x<<endl;}
};
class test:public testl,public test2.{
private:int x;
public:void set(int a){x=a;}
void gettest( ){cout<<x<<endl;}
};
main( ) {
test a;a.get( ); get()存在二义性,使用时需要指出使用哪个基类的函数。例如:a.test1::get()
}
四、完成程序题(本大题共5小题,每小题4分,共20分)
46.完成下面类中的成员函数的定义。
class point
{
private:
int m,n;
public:
point(int,int);
point(point&);
};
point::point(int a,int b)
{
m=a;
___n__=b;
}
point::point(___point & t___)
{
m=t.m;
n=t.n;
}
47.#include <iostream>
using namespace std;
class base
{
private:int x;
public:base(int a){x=a;}
int get( ){return x;}
void showbase( ) {cout<<"x="<<x<<endl;}
};
class Derived:public base
{private:int y;
public:Derived(int a,int b):base(a) {y=b;}
void showderived( )
{cout<<"x="<<get()<<",y="<<y<<endl;}
};
void main()
{
base b(3);
Derived d(6,7);
b.showbase( );
d.showderived( );
________b=d__________;
b.showbase( );
_______base &b1=b___________;
b1.showbase( );
base * pb=&b1;’
pb->showbase( );
d.showderived( );
b.showbase( );
}
输出结果如下:
x=3
x=6,y=7
x=6
x=6
x=6
x=6,y=7
x=6
48.#include <iostream>
#include<fstream>
using namespace std;
class complex
{
public:
int real:
int imag;
complex(int r=0,int i=0)
{
real=r;
imag=i;
}
};
complex operator+(____complex&a______,complex&b)
{
int r=a.real+b.real:
int i=a.imag+b.imag;
return____complex(r,i)______:
}
void main( )
{
complex x(1,2),y(3,4),z;
z=x+y;
cout<<z.real<<"+"<<z.imag<<"i"<<endl;
}
49.下面程序的运行结果如下:
This is line1
This is line2
This is line3
将下列程序补充完整,答案写在答题纸上。源程序如下:
#include <iostream>
#include___<fstream>___
using namespace std;
void main( )
{
fstream fin,fout;
fout.open("my.txt",ios::out);
if(! fout.is_open( ))
return;
for(int i=0;i<3;i=i+1)
fout<<"This is line"<<i+1<<endl;
fout.close( );
fin.open("my.txt",ios::in);
if(! fin.is_open( ))
return;
char str[100];
while(_!fin.eof_____)
{
fin.getline(str,100);
cout<<str<<endl;
}
fin.close( );
}
50.求两个浮点数之差的cha函数的原型声明、调用方法。
#include <iostream>
using namespace std;
void main( )
{
float a,b;
___float cha(float,float)___;∥函数cha的原型声明
a=12.5;
b=6.5;
float c=____cha(a,b)______;∥调用函数cha
cout<<c<<endl;
}
float cha(float x,float y)
{
float w;
w=x-y;
return w;
}
五、程序分析题(本大题共2小题,每小题5分,共1O分)
51.#lnclude<iostream.h>
void func( );
void main( )
{
for(inti=0;i<6;i++)
{
func( );
}
}
void func( )
{
int x=0;
x ++;
static int y=0;
y ++;
cout<<"x="<<x<<";y="<<y<<endl;
}
答:
x=1;y=1
x=1;y=2
x=1;y=3
x=1;y=4
x=1;y=5
x=1;y=6
52.#include <lostream.h>
class A
{
public:
A( );
void Show( );
~A( );
private:
static int c;
};
int A::c=O;
A::A( )
{
cout<<"constructor."<<endl;
c +=10;
}
void A::Show( )
{
cout<<"c="<<c<<endl;
}
A::~A( )
{
cout<<"destrucator."<<endl:
}
void main( )
{
A a,b;
a.Show( );
b.Show( );
}
答:
constructor.
constructor.
c=20
c=20
destrucator.
destrucator.
六、程序设计题(本大题共1小题,共10分)
53.在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形
#include<iostream.h>
#include<math.h>
class point { point
private:float x,y;
public:f(float a,float b){x=a;y=b;}
f( ){x=0;y=0;}
Void set(float a,float b){x=a;y=b;}
float getx( ){return x;}
noat gety( ){return y;}
};
class tri{
point x,y,z;
float s1,s2,s3;
public....settri(....);∥用于输入三个顶点坐标
....test(....);∥用于判断是否构成等边三角形
};
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工作上必须做到以下内容:
1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。
2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。
3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。
4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。
5、在公司及政府的安全检查中杜绝各类违章现象。
6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。
7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。
8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。
10、必须按规定对单位员工进行培训和新员工上岗教育;
11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。
三、 安全奖惩:
1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。
2、每月接受主管领导指派人员对安全生产责任状的落
- 本套试题共分14页,当前页是第14页-
展开阅读全文