2021年四川省绵阳市全国计算机等级考试C++语言程序设计真题(含答案

2021年四川省绵阳市全国计算机等级考试C++语言程序设计真题(含答案


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

2021年四川省绵阳市全国计算机等级考试

C++语言程序设计真题(含答案)

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

一、1.选择题(10题)

1. 已知类X成功地重载了- -、+、=、[ ]这几个运算符。则其中肯定属于

成员函数的运算符是:

A.前置- -和[ ] B.=和[ ] C.[ ]和后置- - D.+和=

2.线性表进行二分法检索,其前提条件是( )。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

3.下面叙述中错误的是( )。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debug

D.软件测试应严格执行测试计划,排除测试的随意性

4. 下面关于析构函数的叙述错误的是( )。

A.析构函数可以完成一些系统清理工作

B.析构函数可以由类对象自动调用

C.析构函数可以有返回值

D.析构函数是一种特殊的函数

5. 下面程序的输出结果是( )。 #include<iostream> #include<string>

using namespace std; void main(){ charp1[10],p2[10]; strcpy(p1,"abc");

strcpy(p2,"ABC"); charstr[50]="xyz"; strcpy(str+2,strcat(p1,p2));

cout<<str; }

BC BC ABC C

6.下列SQL语句中,用于修改表结构的是( )。

7. 关于对象概念的描述中,_______ 是错误的。

A.对象就是C语言中的机构变量

B.对象是状态和操作的封装体

C.对象之间的信息传递是通过消息进行的

D.对象是某个类的一个实例

8. 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测

试用例的测试方法是()

A.黑箱测试法 B.白箱测试法 C.错误推测法 D.安装测试法

9.下列关于类和对象的叙述中,错误的是( )。

A.一个类只能有一个对象 B.对象是类的具体实例 C.类是对某一类对

象的抽象 D.类和对象的关系是一种数据类型与变量的关系

10. C++语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语

B.C

二、单选题(13题)

11. 下面 ______ 是正确的递归函数,它保证对所有的参数能够结束。

f(int n){ if(n<1) return 1; else return n*f(n+1); }

f(int n){ if(n>1) return 1; else return n*f(n-1); }

f(int n){ if(abs(n)<1) return 1; else return n*f(n/2); }

f(int n){ if(n>1) return 1; else return n*f(n*2); }

12.支持子程序调用的数据结构是_________。

A.栈 B.树 C.队列 D.二叉树

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

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

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

14.下列叙述中错误的是( )。

A.在程序中凡是以“#”开始的语句行都是预处理命令行

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.C++中预处理命令行的处理是在程序执行的过程中进行的

15.下列关于析构函数的描述中,错误的是( )。

A.析构函数可以重载 B.析构函数由系统自动调用 C.每个对象的析构

函数只被调用一次 D.每个类都有析构函数

16.下面关于虚函数的描述中正确的是( )。

A.虚函数是一个静态成员函数

B.虚函数是一个非成员函数

C.虚函数可以在函数说明时定义,也可以在函数实现时定义

D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

17.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2

的排序方法是

A.快速排序 B.冒泡排序 C.直接插入排序 D.堆排序

18.有如下程序:

#include

usingnamespacestd;

classPair{

intm,n;

public;

Pair(intj,intk):m(j),n(k){}

intget(){returnm;}

intget()const{returnm+n;}

};

intmain(){

Paira(3,5);

constPairb(3,5);

cout<

return0;

}

运行时的输出结果是( )。

A.33 B.38 C.83 D.88

19. 下列选项中,不是C++关键字的是()。

A. class B. function C. friend D. virtual

20. 下列叙述中正确的是( )。

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

21.栈通常采用的两种存储结构是

A.A.线性存储结构和链表存储结构

B.散列方式和索引方式

C.链表存储结构和数组

D.线性存储结构和非线性存储结构

22.软件详细设计产生的图如下:

A.N—S图 图 C.程序流程图 D.E—R图

该图是( )。

23.下列叙述中正确的是

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

三、2.填空题(12题)

24. 执行以下程序后,输出“#”号的个数是【 】。

#include<iostream.h>

main()

{

int i,j;

for(i=1;i<5;i++)

for(j=2;j<=i;j++)

cout<'#';

}

25. 在C++中,派生类有三种继承方式,它们分别是公有继承、私有继

承和【 】。

26. 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实

体“项目主管”与实体“项目”的联系属于【 】的联系。

27. 关系模型的四种基本操作为插入、删除、修改和【 】。

28. 如果类中的一个成员函数的定义实现在类内,则该函数系统自动默

认为该类的【 】函数。

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

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

bool fun(char*str)}

int i:0,j=0;

while(str[j]) (6) ;

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

return i (7) J;

}

30. 在析构函数中调用虚函数时,采用【 】联编。

31. 数据结构分为线性结构和非线性结构,带链的队列属于______。

32. 下面程序的运行结果是【 】

#include <iostream>

using namespace std;

int fun(int n)

{

static int m = 2;

m=m+n;

return m;

}

int main ( )

{

int a = 3, b = 4;

int x;

x = fun( a );

x = fun( b );

cout<<x<<end1;

return O;

}

33. 下列程序完成从文件读取文件显示的同时写入第二个文件,则在程

序中划线部分应该出现的语句是【 】。

#include<iostream, h>

#include<fstream, h>

void main()

{

fstream filel, file2;

char fnl [10], fn2[10], ch;

cout<<"输入源文件名";

cin>>fn1;

cout<<"输入目标文件名";

cin>>fn2;

(fn1, ios :: in);

______

while((ch=()) ! =EOF)

{

cout<<ch;

(ch)

}

file1, close()

file2, close();

}

34. 为满足运算符+的可交换性,必须将其重载为【

35. 以下程序的输出结果是【 】。

#include<iostream.h>

unsigned frn(ullsigned num)

{ unsi9ned k=1;

do{k*=num%10;num/=10;} while(num);

return k;

}

void main()

{ unsigned n=26;

cout<<fun(n) <<endl;

}

】。

四、程序改错题(10题)

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

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

100

37

32

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

可。

试题程序:

#include

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

voidmain

{

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

intm=0142:

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

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

}

37.使用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;

}

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

行时有错误,请改正程序中的错误,使得程序输出:

9,8,7,6,5

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

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

试题程序:

#include(iostream.h>

classTC

{

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

TC(inti)

{

m_i=i;

}

voidprint

{

cout<<--m_i<<,;

}

public:

intm_i;

};

intmain

{

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

inti;

TC04(10);

while(i>5)

{

/********errOr********/

i++:

04.print;

}

cout<

return0;

}

39.使用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;

}

40.使用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;

}

41.使用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;

}

42.使用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<

}

43.使用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;

}

44.使用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;

}

45.使用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;


发布者:admin,转转请注明出处:http://www.yc00.com/news/1714395798a2438679.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信