C++程序设计试题
课程代码:04737
请考生按规定用笔将所有试题的答案涂冲轮中、写在答题纸上。
选择题部分
注意事项:
1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。
2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。
一、散山单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。
1.下列不属于C++关键字的是
A. extern
B.goto
C.free
D.default
2.C++中定义标准输入的库为
A.stdio
B.math
C.istream
D.stdlib
3.My是一个类,则执行语句My a[3],*[2];之后,自动调用构造函数次数为
A.2
B.3
C.4
D.5
4.下列语句错误的是
A. int val( 20)
B.extern int val( 20)
C. const int val
D.extern const int val
5.下列说法中,有关构造函数是正确的是
A.任何一类必定有构造函数
B.可定义没有构造函数的类
C.构造函数不能重载
D.任何一类必定有缺省的构造函数
6.下面关于类和对象说法不正确是
A.类由数据与函数组成
B.一个对象必属于某个类
C.对象是类的实例
D.一个类的对象只有一个
7.下面选项中不是类成员函数的是
A.构造函数
B.析构函数
C.友元函数
D.静态函数
8.在C++中类之间的继承关系具有
A.自反性
B.对称性
C.传递性
D.反对称性
9.C++中类的成员默认为
A. public
B.private
C.protected
D.static
10.C++中要实现动态联编,调用虚函数时必须使用
A.基类指针
B.类名
C.派生类指针
D.对象名
11.下面对析构函数的正确描述是
A.系统不能提供默认的析构函数
B.析构函数必须由用户定义
C.析构函数没有参数
D.析构函数可以设置默认参数
12.在下面的二维数定义正确的是
A.int ary[5][ ]
B.int ary[ ][5]={{0,1,2}}
C.int ary[ ][5]
D.int ary[5,5]
13.以下说法中正确的是
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++中函数必须有返回值
D.C++中函数名必须
14.对C++中主函数描述正确的是
A.名称为main,可为多个
B.名称不限,可为多个
C.名称为main,必须有且只能有—个
D.名称不限,必须有且只能有—个
15.下面声明纯虚函数语句正确的是
A. void fun( ) =0
B.virtual void fun( )=0
C. virtual voicl fun( )
D.virtual void fun( ){ }
16.对于拷贝构造函数和赋值 *** 作的关系,正确的描述是
A.拷贝构造函数和赋值 *** 作是完全一样的 *** 作
B.进行赋值 *** 作桐埋时,不会调用类的构造函数
C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
D.拷贝构造函数和赋值 *** 作不能在同一个类中被同时定义
17.使用重载函数的目的是
A.共享函数数据
B.减少代码量
C.优化运行效率
D.提高可读性
18.C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
19.假定有“char * p="Hello";”,若要输出这个字符串的地址值正确的写法为
A. cout<<*p
B.cout<FONT>
C. cout<<&p
D.cout<<(void*)p
20.从本质上看,引用变量是被引用变量的
A.拷贝
B.别名
C.复制
D.克隆
非选择题部分
注意事项:
用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。
二、填空题(本大题共20小题,每小题1分,共20分)
21.C++程序的编译是以_____为单位进行的。
22.C++语言支持的两种多态性分别是编译时的多态性和____的多态性。
23.重载的运算符保持其原有的 *** 作符个数、_____和结合性不变。
24.在C++中,函数的参数有两种传递方式,它们分别是值传递和____ 。
25.含有_____的类称为抽象类。
26.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和_____。
27.对于无返回值函数,定义函数时要用_____修饰函数类型。
28.定义重载函数必须在参数的个数或参数的_____上与其它同名函数不同。
29.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数
的工作方法是_____。
30.以面向对象方法构造的系统,其基本单位是_____。
31.C++中定义友元函数使用的关键字为____ 。
32.当一个成员函数被调用时,该成员函数的____ 指向调用它的对象。
33.类可将实现细节隐藏起来,这种机制称为____ 。
34.在面向对象的程序设计中,通过封装实现数据隐藏;通过_____实现代码的复用。
35.在公有继承的中基类数据成员在派生类中的访问权限____ 。
36.复杂对象可以由简单对象构成,这种现象称为____ 。
37.如有“char * p="Hello";”,则语句“cout<<*(p+1);”输出值是_____。
38.基类和派生类的关系称为_____。
39.C++对其对象的数据成员和成员函数的访问是通过_____来限制的。
40.假定x =10,则表达式x<=10? 20:30的值为_____ 。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请在“答题纸”上将错误所在行写出并给出修改意见。
41. #include
class point{
private: float x,y;
public: point( float a,float b){x=ay=b}
void f(){x=0y =0;}
void getx(){cout<<FONT>
void gety(){cout<<FONT>
} ;
main( ) {
point a(3.5);
a.getx( );
}
42. #include iostream. h >
main( ) {
int x =7
const int *p = &x
*p =99
cout <<*p <<endl
}
43. #include iostream. h >
class test{
private: int xy
public: voicl f( int a,int b) { x = ay = b}
int max( ) { return(x >y) ? x:y}
}
main( ) {
test a
a. f( 1 ,3)
cout <<a. max( ) <<endl
}
44. #include
class test{
private: int x
public:test(int a) { x = a}
void set(int a) { x = a}
void get( ) { cout <<x <<endl}
}
class testl: public test{
private: int x
public :testl ( int a) { x = a}
void set( int a) { x = a}
void get( ) { cout <<′′<<endl}
}
45. #include iostream. h >
class f{
private: int x,y
public: fl ( int a,int b) { x = ay = b}
void print( ) { cout <<x <<--<<y <<endl}
}
main( ) {
f a
float x = 1.0,y = 2. 0
a. fl ( x,y)
a. print( )
}
四、完成程序题(本大题共5小题,每题4分,共20分)
46.在答题纸上填上缺少的部分。源程序如下:
#include
using namespace std
class base
{
int a,b
public:
base( int x,int y){a=xb=y}
void show( )
{
cout<<<SPAN>″, ″<<SPAN>
}
}
void main( )
{
base b(78,87);
b.show(b);
}
47.在答题纸上填上缺少的部分。源程序如下:
#include
#include
using namespace std
void main( )
{
myf("ab. txt");//定义输出流文件,并初始化
<<"This ia a TXT file";//向文件输入字符串
myf. close ( );
}
48.在下面程序中的答题纸上填上适当的程序,使程序的输出结果如下:
67 ,90
源程序如下:
#include
using namespace std
class base
{
pnvate:
int x,y
priblic:
void initxy( int a,int b){x=ay=b}
void show( base*p);
} ;
inline void base::show( )
{
cout<p- >x<<""<y<font=""></y<>
}
void print( base*p)
{
p ->show(p);
}
void main()
{
base a;
a.initxy(67 ,90);
print( );
}
49.下面程序给出了一个从普通的基类派生出一个模板类的方法,在答题纸上填上缺少的
部分。
#include
using namespace std;
class Base
{
public:
Base(int a){x=a}
int Getx(){return x;
void showb(){cout<<FONT>
private:
int x;
};
template
class derived: public Base
{
public:
derived(T a,int b):____
{y=a;}
T Gety( ){return y;}
void showd( ){cout<<<" FONT ?<<<endl}>private:
} ;
void main ( )
{ Base A(458);
A.showb ( );
derived char * >B ("It is" ,1357)
B.showd ( );
}
50.下面程序的运行结果如下:
20,22
60,22
在答题纸上填上缺少的部分。源程序如下:
#include iostream >
using namespace std;
class base
{
private:
const int a;
static const int b;
public:
base( int);
void Show();
};
=22
: a (i){ } //初始化
void base : :Show( )
{cout<<<","<<FONT>
void main ( )
{
base al (20) ,a2 (60);
al. Show ( );
a2. Show ( );
}
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.给出下面程序的输出结果
#include
using namespace std
class base
{
int x;
public:
void setx( int a){x=a}
int getx ( ){return x;}
} ;
void main ( )
{
int*p
base a;
a.setx (15);
p= new int (a. getx( ));
cout <<* p
}
52.给出下面程序的输出结果
#include iostream >
using namespace std
class base
{
private:
int x;
public:
void setx (int a){x=a}
int getx ( ){return x}
} ;
void main ( )
{
base a,b
a.setx (89);
b =a
cout <<a.getx ( ) <<endl
cout <<b.getx ( ) <<endl
}
六、程序设计题(本大题共10分)
53.在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)
#include iostream. h >
#include string >
class str{
string sint n,a [ 100 ],j ,1
public:str ( string&a){s=an=0j=0l=0}
....test (....);
int * geta ( ){ return a;}
} ;
请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
这个程序应该是把十进制数
转换成
二进制数
输出
#include
//稿模备
头文件
void
main()
{
int
a,b[10],c,i=0
//
a存储待转换的十进制数,b[10]存储转换后的二进制位,
//
c
是存储
余数
,
printf("输入一个整数\n")
scanf("%d",&a)
//
输入需转换的十进制数
while(a!=0)
//
只要a不为零,就继续转换
{
c=a%2
//
把a除以2
的余数赋值给c
a=a/2
//
把商存入a进行下一次循环
b[i]=c
//
把余数存到数组中作为二进制中的一位
i++
}
for(i>0i--)
printf("%d",
b[i-1])
//反向输出余数,即得到二进码备制
例如输入4
因为4
!=
0
4
/
2
=
2((商=a)...........0(余数=c=b[0])
因为2
!=
0
2
/
2
=
1((商=a)...........0(余数=c=b[1])
因为1
!=
0
1
/
2
=
0((商=a)...........1(余数=c=b[2])
因为
0
=
0
结束键毁循环输出
b[2]
b[1]
b[0]
即
100,也就是二进制的
4
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)