C++程序设计自考题模拟10.docx

上传人:b****7 文档编号:11033169 上传时间:2023-02-24 格式:DOCX 页数:22 大小:22.03KB
下载 相关 举报
C++程序设计自考题模拟10.docx_第1页
第1页 / 共22页
C++程序设计自考题模拟10.docx_第2页
第2页 / 共22页
C++程序设计自考题模拟10.docx_第3页
第3页 / 共22页
C++程序设计自考题模拟10.docx_第4页
第4页 / 共22页
C++程序设计自考题模拟10.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C++程序设计自考题模拟10.docx

《C++程序设计自考题模拟10.docx》由会员分享,可在线阅读,更多相关《C++程序设计自考题模拟10.docx(22页珍藏版)》请在冰豆网上搜索。

C++程序设计自考题模拟10.docx

C++程序设计自考题模拟10

C++程序设计自考题模拟10

(总分:

100.00,做题时间:

90分钟)

一、第Ⅰ部分选择题

单项选择题(总题数:

20,分数:

20.00)

1.关于C++主函数的描述,正确的是______

(分数:

1.00)

 A.有且只能有一个,名称不限

 B.可以有多个,名称不限

 C.有且只能有一个,名称为main √

 D.可以有多个,名称为main

解析:

[考点]本题主要考查的知识点为C++程序的主函数。

C++程序以.cpp作为文件扩展名,并且必须有一个且只能有一个名为main(不是C++关键字)的主函数。

2.定义析构函数时,说法正确的是______

(分数:

1.00)

 A.其名与类名完全相同

 B.返回类型是void类型

 C.无形参,也不可重载 √

 D.函数体中必须有delete语句

解析:

[考点]本题主要考查的知识点为析构函数。

析构函数名是在类名前加求反符号~,A项错误;析构函数不指定返回类型,B项错误;析构函数没有参数,因此析构函数不能重载,C项正确;析构函数函数体中并非必须有delete语句,D项错误。

本题正确答案为C。

3.C++类体系中,不能被派生类继承的有______

(分数:

1.00)

 A.常成员函数

 B.构造函数 √

 C.虚函数

 D.静态成员函数

解析:

4.假定一个类的构造函数为A(intaa,intbb){a=aa++;b=a*++bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为______

(分数:

1.00)

 A.4和5

 B.4和20

 C.4和24 √

 D.20和5

解析:

[考点]本题主要考查的知识点为构造函数对数据成员赋值。

执行构造函数给数据成员赋值,语句a=aa++;先将aa赋值给a,再自加1,故a=4。

语句b=a*++bb;先执行a*++bb再赋值给b,故b=a*(5+1)=24。

5.下面对静态成员的描述中,正确的是______

(分数:

1.00)

 A.静态数据成员可以在类体内进行初始化

 B.静态数据成员不可以被类的对象调用

 C.静态数据成员不受private控制符限制

 D.静态数据成员可以直接用类名调用 √

解析:

[考点]本题主要考查的知识点为静态数据成员。

静态数据成员不能在类体内进行初始化,A项错误;静态数据成员可以被类的对象调用,B项错误;静态数据成员同类的其他成员一样具有访问权限,C项错误;静态数据成员可以有两种方法访问,类名:

:

静态成员和对象.静态成员,D项正确。

6.使用下列哪个流格式控制符可设置转换基数为八进制______

(分数:

1.00)

 A.dec

 B.oct √

 C.hex

 D.endl

解析:

[考点]本题主要考查的知识点为数据的简单输入输出格式。

dec:

设置转换基数为十进制;oct:

设置转换基数为八进制;hex:

设置转换基数为十六进制;endl:

输出一个换行符并刷新流。

7.下列选项中,对类A的析构函数的正确定义是______

(分数:

1.00)

 A.A:

:

~A(void) √

 B.voidA:

:

~A(参数)

 C.A:

:

~A(参数)

 D.voidA:

:

~A()

解析:

8.对于int*pa[5];的描述,正确的是______

(分数:

1.00)

 A.pa是一个指向数组的指针,所指向的数组是5个int型元素

 B.pa是一个指向某个数组中第5个元素的指针,该元素是int型变量

 C.pa[5]表示某个数组的第5个元素的值

 D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针 √

解析:

9.关于new运算符的描述中,错误的是______

(分数:

1.00)

 A.它可以用来动态创建对象和对象数组

 B.使用它创建的对象或对象数组可以使用运算符delete删除

 C.使用它创建对象时要调用构造函数

 D.使用它创建对象数组时必须指定初始值 √

解析:

[考点]本题主要考查的知识点为new运算符。

new创建对象数组时不能指定初始值,D项错误。

10.下列给字符数组进行初始化中,正确的是______

(分数:

1.00)

 A.chars1[]="/n";

 B.chars2[3]="xyz";

 C.chars3[][3]={"a","x","y"}; √

 D.chars4[2,4]={"xyz","mnp"};

解析:

[考点]本题主要考查的知识点为字符数组初始化。

A项s1是字符数组,不是字符;B项数组长度不够,因为字符串最后的结束符占一个字节,所以应定义s2长度为4;D项表示方法不对,所以选择C项。

11.将一个函数声明为内联函数时所使用的关键字为______

(分数:

1.00)

 A.signed

 B.short

 C.const

 D.inline √

解析:

[考点]本题主要考查的知识点为内联函数。

在C++中,除具有循环语句、switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数,其中内联函数的关键字为inline。

12.若有以下定义,则说法错误的是______

inta=100,*p=&a;

(分数:

1.00)

 A.声明变量p,其中*表示p是一个指针变量

 B.变量p经初始化,获得变量a的地址

 C.变量p只可以指向一个整型变量

 D.变量p的值为100 √

解析:

13.在函数定义中的形参属于______

(分数:

1.00)

 A.全局变量

 B.局部变量 √

 C.静态变量

 D.寄存器变量

解析:

14.下列说法中正确的是______

(分数:

1.00)

 A.所有的运算符都能被重载

 B.运算符被重载时,它们的优先级与结合性不会改变 √

 C.当需要时,我们可以自定义一个运算符来进行重载

 D.每个运算符都可以被重载成成员函数和友元函数

解析:

[考点]本题主要考查的知识点为运算符重载。

运算符.、.*、->*、:

:

、?

:

不能被重载;运算符重载是针对C++中原有运算符进行的,不能通过重载创造出新的运算符;=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,故A、C、D项错误,B项正确。

15.对于类中的成员,使用protected修饰,表明该成员的访问权限是______

(分数:

1.00)

 A.公有的

 B.私有的

 C.保护的 √

 D.不可见

解析:

16.析构函数的参数个数为______

(分数:

1.00)

 A.0个 √

 B.1个

 C.至少1个

 D.多于1个

解析:

[考点]本题主要考查的知识点为析构函数。

析构函数没有参数,本题选A。

17.基类的protected成员,通过protected派生,其在派生类中为______

(分数:

1.00)

 A.public

 B.private

 C.protected √

 D.不可访问

解析:

[考点]本题主要考查的知识点为基类成员在派生类中的访问权限。

基类的protected成员,通过公有派生或保护派生,其在派生类中为protected;通过私有派生,其在派生类中为private。

18.下列哪个编译指令不属于条件编译指令______

(分数:

1.00)

 A.#if

 B.#else

 C.#endif

 D.#error √

解析:

[考点]本题主要考查的知识点为条件编译指令。

条件编译指令是#if、#else、#elif和#endif,其中#endif表示一条指令结束。

编译指令#if用于控制编译器对源程序的某部分有选择地进行编译。

编译指令#else在#if测试失效的情况下建立另外一种选择。

19.有关多态性说法不正确的是______

(分数:

1.00)

 A.C++语言的多态性分为编译时的多态性和运行时的多态性

 B.编译时的多态性可通过函数重载实现

 C.运行时的多态性可通过模板和虚函数实现 √

 D.实现运行时多态性的机制称为动态多态性

解析:

20.友元关系不能______

(分数:

1.00)

 A.提高程序的运行效率

 B.是类与类的关系

 C.是一个类的成员函数与另一个类的关系

 D.继承 √

解析:

二、第Ⅱ部分非选择题

填空题(总题数:

20,分数:

20.00)

21.一个const对象只能访问1成员函数。

(分数:

1.00)

解析:

22.如果一个引用不是用作函数参数或返回值,则在说明该引用时必须对它进行1。

(分数:

1.00)

解析:

初始化

23.A是一个类,已有语句“A*p;p=newA[10];”,要释放由p指向的动态空间,正确的语句应该是1。

(分数:

1.00)

解析:

delete[]p;

24.定义1函数时,应在参数个数或参数类型上有所不同。

(分数:

1.00)

解析:

重载

25.将指向对象的引用作为函数的形参,形参是对象的引用,实参是1。

(分数:

1.00)

解析:

对象名

26.在编译指令中,宏定义使用1指令。

(分数:

1.00)

解析:

#define

27.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句1。

(分数:

1.00)

解析:

friendvoidB:

:

fun();

28.如果一个派生类只有一个唯一的基类,则这样的继承关系称为1。

(分数:

1.00)

解析:

单一继承

29.在保护派生中,基类权限为public的成员在派生类中为1。

(分数:

1.00)

解析:

保护类型

30.若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的1语句。

(分数:

1.00)

解析:

声明

31.如果要把PI声明为值为3.14159的双精度实数的符号常量,该声明语句是1。

(分数:

1.00)

解析:

constdoublePI(3.14159);或者constdoublePI=3.14159;

32.在C++中要创建一个文件输入流对象fin,同时该对象打开文件“Test.txt”用于输入,则正确的声明语句是1。

(分数:

1.00)

解析:

ifstreamfin("Test.txt");

33.已知有20个元素的int型向量V1,若用V1初始化向量V2,语句是1。

(分数:

1.00)

解析:

vector<int>V2(V1);

34.若类的成员函数用关键字static进行修饰,这样的成员函数称为1。

(分数:

1.00)

解析:

静态成员函数

35.C++中能提供封装的关键字是1。

(分数:

1.00)

解析:

class

36.C++中有两种继承方式:

单一继承和1。

(分数:

1.00)

解析:

多重继承

37.类模板用来表达具有1的模板类对象集。

(分数:

1.00)

解析:

相同处理方法

38.预处理命令以1符号开头。

(分数:

1.00)

解析:

#

39.在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作的语句是1。

(分数:

1.00)

解析:

vector<int>A(10,1);

40.类是用户定义的类型,具有类类型的变量称作1。

(分数:

1.00)

解析:

对象

三、改错题(总题数:

5,分数:

20.00)

41.下面程序实现数值、字符串的交换。

#include<iostream>

#include<string>

usingnamespacestd;

template<classT>

voidSwap(T&a,T&b)

{Ttemp;

temp=a;a=b;b=temp;

}

voidmain()

{inta=5,b=9;

chars1[]="Hello",s2[]="hi";

Swap(a,b);

Swap(s1,s2);

cout<<"a="<<a<<",b="<<b<<endl;

cout<<"s1="<<s1<<",s2="<<s2<<endl;

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

chars1[]="Hello",s2[]="hi";使用Swap(s1,s2)调用交换的是地址。

字符指针作实参,形参值发生改变,实参也就发生变化。

应改为char*s1="Hello",*s2="hi";。

42.#include<iostream>

classB

{inta,b;

constintc;

public:

B(inti=0,intj=0){a=i;b=j;c=i-j;}

};

voidmain()

{Ba,b(3,5);

Bx=a,z(5,9);

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

B(inti=0,intj=0){a=i;b=j;c=i-j;}c是常数据成员,必须在构造函数初始化列表中进行初始化。

应改为B(inti=0,intj=0):

c(i-j){a=i;b=j;}。

43.#include<iostream.h>

classfract

{private:

intden;

intnum;

public:

fraet(intd=0,intn=1):

den(d),num(n){}

friendfract&operator+=(fract&,fract&);

voidshow(){cout<<den<<"/"<<num;}

};

friendfract&operator+=(fract&f1,fract&t2)

{f1.den=f1.den*f2.num+f1.num*f2.den;

f1.num*=f2.num;

returnf1;

}

voidmain()

{fraetfr(3,4);

fr+=fract(5,7);

fr.show();

cout<<endl;

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

friendfract&operator+=(fract&f1,fract&f2)定义函数时,不能用friend修饰。

应改为fract&operator+=(fract&f1,fract&t2)。

44.#include<iostream.h>

classA

{private:

intx;

protected:

inty;

public:

A(inti,intj){x=i;y=j;}

};

classB:

publicA

{public:

B(inta,intb):

A(a,b){}

voidshow(){cout<<x<<","<<y<<endl;}

};

voidmain()

{Bb(8,9);

b.show();

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

private:

x在基类中是私有成员,采用公有派生时,在派生类无法访问。

应改为public:

或protected:

45.#include<iostream.h>

classBase

{protected:

intx;

public:

virtualvoidfun()=0;

};

classDerived:

publicBase

{intz;

public:

Derived(inti){z=5;}

voidfun()

{cout<<"派生类fun():

"<<"z="<<z<<endl;}

};

voidmain()

{Derivedb____;

Base*p=newBase(6);

p=&b;

p->fun();

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

Base*p=newBase(6);因为基类有纯虚函数,即基类是抽象类,抽象类不能实例化。

应改为Base*p;。

四、完成程序题(总题数:

5,分数:

20.00)

46.请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

11,10

13,12

#include<iostream.h>

classA

{inta;

public:

A(inti=0){a=i;}

intGeta(){returna;}

voidshow(){cout<<a<<endl;}

};

classB

{Aa;

intb;

public:

B(inti,intj)______

{}

voidshow(){cout<<a.Geta()<<","<<b<<endl;}

};

voidmain()

{Bb[2]={B(10,11),B(12,13)};

for(inti=0;i<2;i++)

______

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

:

a(j),b(i)b[i].show();

47.#include<iostream.h>

#include<stdlib.h>

classarr

{______

ints;

public:

arr(inta[],intn)

{v=a;

s=n;

}

intsize(){returns;}

int&operator()(intn);

};

______()(intn)

{if(n>s)

{cerr<<"下标越界!

"<<endl;

exit____;

}

returnv[n];

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

int*v;int&arr:

:

operator

48.输出数组中的最小数。

#include<iostream.h>

voidmain()

{inta[]={34,91,83,56,29,93,56,12,88,72};

intindex=0;

int______/sizeof(*a);

for(inti=1;i<n;i++)

{if(a[index]>a[i])

______

}

cout<<"a数组最小数:

"<<a[index]<<endl;

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

n=sizeof(a)

index=i;

49.下面程序中Base是抽象类。

请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

Der1called!

Der2called!

#include<iostream.h>

classBase

{public:

______;

};

classDer1:

publicBase

{public:

voiddisplay(){cout<<"Der1called!

"<<endl;

};

classDer2:

publicBase

{public:

voiddisplay(){cout<<"Der2called!

"<<endl;

};

voidfun(______)

{p->display();}

voidmain()

{Der1b1;

Der2b2;

Base*p=&b1;

fun(p);

p=&b2;

fun(p);

}

(分数:

4.00)

__________________________________________________________________________________________

正确答案:

()

解析:

virtualvoiddisplay()=0Base*p

50.下面程序中用来求数组和。

请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

s=150。

#include<iostream.h>

classArr

{int*a,n;

public:

Arr():

a(0),n(0){}

Arr(int*aa,intnn)

{n=nn;

a=newint[n];

for(inti=0;i<nn;i++)

*(a+i)=*(aa+i);

}

~Arr(){deletea;}

______

{return*(a+i);}

};

voidmain()

{intb[5]={10,20,30,40,50};

Arra1(b,5);

int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1