2021年河北省秦皇岛市全国计算机等级考试C++语言程序设计模拟考试

2021年河北省秦皇岛市全国计算机等级考试C++语言程序设计模拟考试


2024年4月29日发(作者:)

2021年河北省秦皇岛市全国计算机等级考

试C++语言程序设计模拟考试(含答案)

学校:________ 班级:________ 姓名:________ 考号:________

一、1.选择题(10题)

1.下列关于this指针的叙述中,正确的是( )。

A.任何与类相关的函数都有this指针

B.类的成员函数都有this指针

C.类的友元函数都有this指针

D.类的非静态成员函数才有this指针

2. 定义如下枚举类型: enum{Monday,Tuesday,Wednesday,Thursday,

Friday=2}; 则下列语句正确的是( )。

A.表达式Wednesday==Friday的值是true

;day=3;

;day=Monday+3;

;day=Tuesday+10;

3.下列说法中,不属于数据模型所描述的内容的是( )

A.数据结构 B.数据操作 C.数据查询 D.数据约束

4. 对于语句cout<<endl<<x;中的各个组成部分,下列叙述中错误

的是( )。

A.“cout'’是一个输出流对象 B.“endl”的作用是输出回车换行 C.“x”是一

个变量 D.“<<”称作提取运算符

5. 下面不属于软件设计原则的是______。

A.抽象 B.模块化 C.自底向上 D.信息隐蔽

6.链表不具有的特点是()

A.不必事先估计存储空间 B.可随机访问任一元素 C.插入删除不需要

移动元素 D.所需空间与线性表长度成正比

7. 下列关于C++语言类的描述中错误的是

A.类用于描述事物的属性和对事物的操作

B.类与类之间通过封装而具有明确的独立性

C.类与类之间必须是平等的关系,而不能组成层次结构

D.类与类之间可以通过一些方法进行通信和联络

8. 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结

构分成( )。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线

性结构 D.内部结构和外部结构

9.数据库设计包括两个方面的设计内容,它们是()。

A.概念设计和逻辑设计 B.模式设计和内模式设计 C.内模式设计和物

理设计 D.结构特性设计和行为特性设计

10. 下列关于线性表叙述中,不正确的是( )。

A.可以有几个节点没有前件

B.只有一个终端节点,它无后件

C.除根节点和终端节点,其他节点都有且只有一个前件,也有且只有一

个后件

D.线性表可以没有数据元素

二、单选题(13题)

11.下列关于运算符重载的描述中,正确的是

A.运算符重载可以改变操作数的个数

B.运算符重载可以改变运算符的优先级

C.运算符重载可以改变运算符的结合性

D.运算符重载可以使运算符实现特殊功能

12.设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应

选择的存储类别是( )。

er 0或register

13.由于常对象不能被更新,因此

A.通过常对象只能调用它的常成员函数

B.通过常对象只能调用静态成员函数

C.常对象的成员都是常成员

D.通过常对象可以调用任何不改变对象值的成员函数

14.要利用C++流进行文件操作,必须在程序中包含的头文件是

( )。

am m eam p

15.如果表达式-x/y中的“--”和“/”是作为友元函数重载的运算符,采用

运算符函数调用格式,该表达式还可表示为( )。

or/(x.operator--(),y);

or/(operator--(x),y);

C.X.operator--().operator/(y);

D.y.operator/(operator--(x));

16.下列模式中,能够给出数据库物理存储结构与物理存取方法的是

A.内模式 B.外模式 C.概念模式 D.逻辑模式

17.下列程序的运行结果是( )。

#include

classA

{

inta;

public:

A(){a=0;}

A(){intaa}

{a=aa;

cout<

}

};

voidmain()

{

Ax,y(2),z(3);

cout<

}

A.00 B.23 C.34 D.25

18. 对于拷贝构造函数和赋值操作的关系,正确的是( )。

A.拷贝构造函数和赋值操作是完全一样的操作

B.进行赋值操作时,会调用类的构造函数

C.当调用拷贝构造函数时,类的对象正在被建立并被初始化

D.拷贝构造函数和赋值操作不能在同一个类中被同时定义

19.对于模板定义关键字class和typename说法不正确的是(

A.程序中的class并不能都替换为typename

和typename都可互相替换

C.程序中的typename都能替换为class

D.程序中的部分class可以替换为typename

。 )

20.若有以下定义: inta[]={1,2,3,4,5,6,7}; charc1=b,c2=2;

则数值不为2的表达式是( )。

A.a[1] 1 C.a[3-c2] D.c2-0

21. 下列函数中,( )是对文件进行写操作的。

() () () ()

22.下面对静态数据成员的描述中,正确的是( )。

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

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

C.静态数据成员不能受private控制符的作用

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

23.下列特征中不是面向对象方法的主要特征的是( )。

A.多态性 B.继承 C.封装性 D.模块化

三、2.填空题(12题)

24. Staff类含有血型数据成员ID,两个Staff 对象相等是指它们的ID

相同。下面的函数重载了运算符“==”,它用来判断两个Staff 对象是否

相等,相等时返回true,否则返回false。请将空格处缺失部分补充完整。

boo Staffi:: Staff ==(const Smff &s)

{

return(【 】);

}

25. 下面程序的输出是:

***********5.23

5.23***********

请将下划线上遗漏的部分补充完整。

#include<iostream>

#include<iomanip>

using namespace std;

void main(){

double i=5.23;

cout<<【 】<<setw(14)<<i

cout<<endl<<【 】<<setw(14)<<i;

}

26. 在C++中,下列程序段的输出结果是【 】。

int x, a[10];

cout<<sizeof(x)<<“”<<sizeof(a)<<“”<<sizeof(float)<<end1

27. 下列函数的功能是判断字符串str是否对称,对称则返回true,否则

返回false。请在横线处填上适当内容,实现该函数。

bool fun(char *str)

{

int i=0,j=0;

while(str[j])______;

for(j--;i<j && str [i]==str[j];i++,j--);

return i______j;

}

28. 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对

象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其

输出结果是______。

#include<iostream>

using namespace std;

class Base{

public:

void print(){cout<<'B';}};

class Derived:public Base{

public:

void print(){cout<<'D';}};

int main()

{

Derived* pd=new Derived();

Base* pb=pd;

pb->print();

pd->print();

delete pd;

return 0;

}

29. 有如下定义:

class MA{

int value;

public:

MA(int n=0):value(n){}

};

MA*ta,tb;

其中MA类的对象名标识符是______。

30. 以下程序的执行结果是______。

#include<iostream.h>

class Sample

{

int n;

public:

Sample(){}

Sample(int m){n+m;)

int&operator--(int)

{

n--

return n;

}

void disp () {cout<<"n= "<<n<<end1;}

}

void main ()

{

Sample s

31. 若有以下程序:

#include <iostream>

using namespace std;

#define PI 3.14

class Point

{

private:

int x,y;

public:

Point (int a,int b)

{

x=a;

y=b;

}

int getx ()

{

return x;

}

int gety()

{

return y;

}

};

class Circle : public Point

{

int r;

public:

Circle(int' a, int b,int C) : Point (a, b)

{

r=c;

}

int getr()

{

return r;

}

double area()

{

return PI*r*r;

}

};

int main()

{

Circle c1(5,7,10);

cout<<()<<end1;

return 0;

}

程序执行后的输出结果是【 】。

32. 若有以下定义及初始化语句:

int i=100;

int *ip=& i;

int k=*ip;

并假设整型数i的地址为0x12345678,指针中的地址为0x21000000,则

k的值为【 】。

33. 下列程序的输出结果是______。

#include<iostream>

using namespace std;

class Test {

public:

Test() { cnt++;}

~Test() {cnt--;}

static int Count() {return cnt;}

private:

static int cnt;

};

int Test::cnt=0;

int main()

{

cout<<Test::Count()<<'';

Test t1,t2;

Test*oT3=new Test;

Test*pT4=new Test;

cout<<Test::Count()<<'';

delete pT4;

delete pT3;

cout<<Test::Count()<<endl;

return 0;

}

34. 数据的基本单位是【 】。

35. C++程序是从【 】函数开始执行的。

四、程序改错题(10题)

36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

//******error******

TC:TC

{

cout<<"Constructor"<<",";

i=0;

)

//******error******

TC:display

{

tout<<"i="<

}

//******error******

TC:TC

{

COUI<<"Destructor"<

}

voidmain

{

TCa;

a.display;

}

37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******error******的下面,修改该语句即

可。

试题程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

//******error******

TC:TC

{

cout<<"Constructor"<<",

i=0;

)

//******error******

TC:display

{

";

tout<<"i="<

}

//******error******

TC:TC

{

COUI<<"Destructor"<

}

voidmain

{

TCa;

a.display;

}

38.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实

现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

//******error******的下面。

试题程序:

#include

#include

//********error********

usingstd;

voidWriteFile(char*s)

{

ofstreamout1;

//********error********

out1.open("1.txt",binary|app);

for(inti=0;s[i]!=0;i++)

{

//********error********

out1.puts(s[i]);

}

out1.close;

}

voidClearFile

{

ofstreamout1;

out1.open("1.txt");

out1.close;

}

intmain

{

chars[1024];

ClearFile;

cout<<"pleaseinputastrin9:"<

cin.getline(s,1024);

WriteFile(s);

return0;

}

39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序

要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可

能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出

到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<

//********error********

cin.getline(str,120);

//********error********

while(str)

{

//********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

}

cout<

return;

}

40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要

求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输

入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕

中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<

//********error********

cin.getline(str,120);

//********error********

while(str)

{

//********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

}

cout<

return;

}

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include

intmain

{

try

{

throw("error");

}

//********error********

catch(chars)

{

cout<

}

try

{

throw((int)0);

}

//********error********

catch

{

cout<

}

try

{

throw(O);

throw("error");

}

//********error********

catch

{

cout<<"ERROR"<

}

return0;

}

42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行有问题,请改正main函数中的错误,使程序的输出结果为:

number=1

number=10

number=100

注意:不要改动main函数,不能增加或删除行。也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include

classTC

{

public:

TC(inti)

{

number=i;

}

voidSetNumber(intm)

{

number=m;

}

intGetNumberconst

{

returnnumber;

}

voidPrintconst

{

cout<<"number="<

}

private:

intnumber;

};

voidmain

{

//********error********

TCobjl;

objl.Print;

TCobj2(3);

//********error********

objl.number=10;

//********error*‰******

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

43.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果

为:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

(1)不能删除assert()语句。

(2)只能修改后面的数字。

提示:assert函数如果为假,则会产生一个中断异常。

试题程序:

#include

#include

voidmain()

{

char*s1="abc":

//********error********

assert(sizeof(s1)==3):

cout<<"sizeof(s1)=5"<

chars2[10]="ab":

//********error********

assert(sizeof(s2)==2);

cout<<"sizeof(s2)=10"<

chars3=23:

//********error********

assert(sizeof(s3)==4);

cout<<"sizeof(s3)=1"<

return;

}

44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程

序运行有问题,请改正main函数中的错误,使该程序的输出结果正

确。

程序输出:

8

8

注意:错误的语句在/********error********/的下面。修改该语句

即可,其他的语句不能修改。

试题程序:

#include(iostream.h>

classCO

{

public:

/********error********/

staticintn=0:

CO

{

n++:

}

~CO

{

n--:

}

}:

/********error********/

intCO::n;

voidmain

{

COobj;

COobj2[7];

CO*C=NULL:

c=&obj:

/********error********/

eout<

cout<

}

45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include

intmain

{

try

{

throw("error");

}

//********error********

catch(chars)

{

cout<

}

try

{

throw((int)0);

}

//********error********

catch

{

cout<


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714394319a2438371.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信