2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第1页
2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第2页
2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第3页
2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第4页
2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022年广东省韶关市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、1.选择题(10题)1.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是structnode{chardata;structnode*next;}a,b,*p=&a,*q=&b;

A.a.next=q;B.p.next=&b;C.p->next=&b;D.(*p).next=q;

2.关于语句#include<iostream>usingnamespacestd;voidmain(){cout<<100.8989663<<'';com<<fixed<<100.8989663<<'';cout<<scientific<<100.8989663<<'';}的输出结果为()

A.100.899100.8989661.008990e+002

B.100.8989663100.8989661.008990e+002

C.100.899100.8989661.008989e+002

D.100.899100.89896631.008989e+002

3.C++源程序文件的扩展名为()。

A.CPPB.CC.DLLD.EXE

4.已知语句intm=10;则下列引用的表示中正确的是

A.int&x=m;

B.int&y=10;

C.int&z;

D.float&t=&m;

5.下列叙述中正确的是

A.实体集之间一对一的联系实际上就是二一对应的关系

B.关系模型只能处理实体集之间一对一的联系

C.关系模型属于格式化模型

D.以上三种说法都不对

6.对下列二叉树进行中序遍历的结果是

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

7.类模板的模板参数()。

A.只可作为数据成员的类型B.只可作为成员函数的返回类型C.只可作为成员函数的参数类型D.以上三者皆是

8.如下图所示的4棵二叉树中,不是完全二叉树的是()。

A.

B.

C.

D.

9.下面程序的结果为#include"iostream.h"voidchange(inta,intb){inttemp;temp=a;a=b;b=temp;}voidmain(){intm,n;m=8;n=9;change(m,n);cout<<m<<""<<n<<endl;}

A.89B.98C.程序有错误D.99

10.在深度为5的满二叉树中,叶子节点的个数为A.A.32B.31C.16D.15

二、单选题(13题)11.耦合性和内聚性是对模块独或性度量的两个标准。下列叙述中正确的是()。

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

12.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

13.有如下函数模板声明:template

TMax(Ta,Tb){return(a>=b)?a.b;}下列对函数模板Max()的调用中错误的是()。

A.Max(3.5,4.5)

B.Max(3.5,4)

C.Max(3.5,4.5)

D.Max(3.5,4)

14.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是()。

A.编译程序B.操作系统C.教务管理系统D.汇编程序

15.下面是重载为非成员函数的运算符函数原型,其中错误的是A.Fractionoperator+(Fraction,Fraction);

B.Fractionoperator-(Fraction);

C.Fraction&perator=(Fraction&,Fraction);

D.Fraction&operator+=(Fraction&,Fraction);

16.下列叙述中正确的是

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目的是解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上3种说法都不对

17.下面程序的运行结果为()。#include<iostream.h>voidswap(int&a,intb){inttemp;temp=a++;a=b:b=temp:}voidmain(){inta=2,b=3;swap(a,b);cout<<a<<","<<b<<endl;}

A.2,3B.3,2C.2,2D.3,3

18.判断char型变量c是否为小写字母的正确表达式是()。

A.'a'<=c<='z'

B.(c>=A)&&(c<=z=

C.('a'>=c)||('z'<=c)

D.(c>='a')&&(c<='z')

19.有以下程序段

intk=0;

while(k=1)k++;

while循环执行的次数是

A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次

20.有如下类定义:classMyClass{intvalue;public:MyClass(intn):value(n){}intgetValueconst{retumvalue;}};则类MyClass的构造函数的个数是()。A.1个B.2个C.3个D.4个

21.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

22.若变量已正确定义为int型,要通过语句“scanf(”%d,%d”,&a,&b,&c);”给a赋值l、给b赋值2、给c赋值3,A.

B.

C.

D.

23.已知类A有公用数据成员a,并重载了=运算符,且有Aobj2;constA*ptr=newA;,则下列语句错误的是()。

A.ptr->a=100;B.ptr=&obj2;C.ptr++;D.obj2=*ptr;

三、2.填空题(12题)24.经常和一个运算符连用,构成一个运算符函数名的C++关键词是【】。

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

#include<iostream>

usingnamespacestd;

voidfun(int&rf)

{

rf*=2;

}

intmain()

{

intnum=500;

fun(num);

cout<<num<<endl;

return0;

}

26.C++中,设置虚基类的目的是【】。

27.下面程序的结果为______。

#include<iostream.h>

voidmain()

{

int3=1,b=2;

boolc=1;

if(a>b)||c)cout<<“true”<<endl;

else

cout<<“false”<<endl;

}

28.已知有函数f的定义如下:

intf(){

staticints=0;

s+=2;

returns;

}

则在某程序中第二次执行函数调用语句f();时,函数f的返回值是______。

29.非成员函数必须声明为类的______才能访问这个类的private成员。

30.耦合和内聚是评价模块独立性的两个主要标准,其中【】反映了模块内各成分之间的联系。

31.在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个______实际上对应一个处理模块。

32.假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数首部形式为【】。

33.假定A为一个类,则语句A(A&a);为该类【】函数的原型说明。

34.表达式c3=c1.operator+(c2)或c3=operator+(c1,c2)还可以表示为______。

35.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

四、程序改错题(10题)36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

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

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

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

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

{

char*s1="abc":

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

assert(sizeof(s1)==3):

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

chars2[10]="ab":

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

assert(sizeof(s2)==2);

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

chars3=23:

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

assert(sizeof(s3)==4);

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

return;

}

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="<<i<<","<<endl;}//******error******TC:TC{COUI<<"Destructor"<<endl:}voidmain{TCa;a.display;}38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}

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

return0;

}

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/********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<<C.n<<endl;cout<<C0::n<<endl;}

42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

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

cin.getline(str,120);

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

while(str)

{

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

if(str[i])=a)

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

i++;

}

cout<<str<<endl;

return;

}

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

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

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

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

试题程序:

#include<iostream>

#include<fstream>

//********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:"<<endl;

cin.getline(s,1024);

WriteFile(s);

return0;

}

44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h)

intmain

{

try

{

throw("error");

}

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

catch(chars)

{

cout<<s<<endl;

}

try

{

throw((int)0);

}

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

catch

{

cout<<i<<endl;

}

try

{

throw(O);

throw("error");

}

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

catch

{

cout<<"ERROR"<<endl;

}

return0;

}45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h>voidmain{inti=0;charstr[120];cout<<"Enterastringendwith?."<<endl;//********error********cin.getline(str,120);//********error********while(str){//********error********if(str[i])=a)str[i]=str[i]-a+A;i++;}cout<<str<<endl;return;}五、综合应用题(2题)46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。程序输出结果如下:1O51057(1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。(2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传人。请在注释2之后添加适当的语句。(3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。(4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。试题程序:#include(iostream.h>classBA{inta;public://********1********intgeta{returna;}};classPAl:publicBA{intb;public://********2********intgetb{returnb;}};classPA2:publicPAl{intC;public://********3********voidshow{//********4********}};voidmain{PA2a(7,5,10);cout<<a.geta<<endl;cout<<a.getb<<endl;a.show;}47.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。程序输出结果如下:73738注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。试题程序:#include<iostream.h>classA{inta;public://********1********intgeta{returna;}};classA1:publicA{intb;public://********2********intgetb{returnb;}};classA2:publicA1{intC;public://****,****3********voidshow{//********4********}};voidmain{A2a(8.3.7):cout<<a.geta<<endl:cout<<a.getb<<endl:a.show;}六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程tsst6_3,此工程包含一个源程序文件test6_3.cpp,其中定义了用于表示考生的类Student,请按要求完成下列操作,将程序补充完整。

(1)定义私有数据成员code、english分别用于表示考生的编号、英语成绩、它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

(2)完成成员函数voidStudent::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下:

输入编号:

英语成绩;

计算机成绩:

请在注释“//**2**”之后添加适当的语句。

(3)利用己实现的类Student的成员函数,完成函数voidfirstname(Student*A[],intnum)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。请在注释“//**3**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test6_3.cpp清单如下:

#include<iostream.h>

classStudent

{

//**1**

intcomputer;

inttotal;

public:

voidgetinformation();

voidcomputesum();

intgetcode();

intgettotalscore();

~Student();

};

voidStudent::getinformation()

{

//**2**

cout<<"英语成绩:";

cin>>english;

cout<<"计算机成绩:";

cin>>computer;

}

voidStudent::computesum()

{

total=english+computer;

cout<<"编号"<<code<<"总分:"<<total<<endl;

}

intstudent::getcode()

{

returncode;

}

intStudent::gettotalscore()

{

returntotal;

}

voidfirstname(Student*A[],intnum)

{

//**3**

tempsum=(*A[0]).gettotalscore();

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

{

if(((*A[i]).gettotalscore())>tempsum)

{

tempcode=(*A[i]).getcode();

telnpsum=(*A[i]).gettotalscore();

}

}

cont<<"总分最高者--"<<tempcode<<":"<<tempsum<<endl;

}

voidmain()

{

Student*A[3];

inti,n=3;

for(i=0;i<n;i++)

{

A[i]=newStudent;

A[i]->getinformation();

}

for(i=0;i<n;i++)

{

A[i]->computesum();

}

firstname(A,3);

}

49.使用VC6打开考生文件夹下的工程MyProj5。此工程包含一个源程序文件MyMain5.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整。请按要求完成下列操作,将类Date的定义补充完成:

①定义私有数据成员length、width和labe1,其中length、width是int型,labe1是类point的对象。它们分别表示长方形的长、宽以及坐标点。请在注释“//**1**”之后添加适当的语句。

②完成构造函数square的定义,使square对象的默认值为:length=0,width=0,label(0,0),请在注释“//**2**”之后添加适当的语句。

③完成重载构造函数square(intl,intw,intx,inty)的定义,把数据成员length、width和对象labe1分别初始化为参数l、w、x和y的值,请在注释“//**3**”之后添加适当的语句。

④完成成员函数get_area()的类外定义,此函数的功能是返回此长方形的面积,及返回length*width的值。请在注释“//**4**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件MyMain5.cpp清单如下:

//MyMain5.cpp

#include<iostream>

usingnamespacestd;

classpoint

{

private:

intx,y;

public:

voidset(inti,intj)

{

x=i;

y=j;

}

intget_y()

{

returny;

}

};

classsquare

{

//**1**

public:

//**2**

square(intl,intw,intx,inty)

{

//**B**

}

voidset(intl,intw)

{

length=1;

width=w;

}

intget_area()const

{

returnlength*width;

}

};

intsquare::getarea()const

{

//**4**

}

intmain()

{

squaresmall(2,4,1,35);

cout<<small.get_area()<<end1;

return0;

}

参考答案

1.B解析:本题考查结构体指针变量的赋值方法。要把结点b连接到结点a之后,必须把b的地址给a的next指针,选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。

2.A

3.A解析:本题考察有关C++语言中有关C++程序开发方面的知识点。C++语言源程序的扩展名为.CPP,.DLL是动态连接库文件的扩展名,.EXE是可执行文件的扩展名。

4.A解析:本题考查C++中引入的新类型;引用。引用表示变量的别名,使用方式同变量,效果同指针。引用不能用常数进行赋值,引用的类型必须一致,引用在使用之前必须初始化。

5.D解析:实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且.实体集“座位”中中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项A中的说法是错误的。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。因此,选项B中的说法也是错误的。关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项C中的说法也是错误的。

6.C解析:按照二叉树中序遍历的方法:在访问根结点、遍历左子树与遍历右手树这三者中:首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。对本题中的二叉树进行中序遍历的结果应是:TZBACYXP。

7.D

8.D解析:本题考查完全二叉树的概念。完全二叉树是指除最后一层外,每一层上的节点数都达到最大值:在最后一层上只缺少右边的若干节点。选项D中第二层的左边节点没有达到最大值。

9.A解析:两数只在函数change内被使用,函数调用完后该内存被释放,因此没有交换两数。注意:交换两个数的方法简单说有两种一是使用指针,二是用引用。

10.C解析:满二叉树是指除最后一层外,每一层上的所有节点都有两个叶子节点。在满二叉树中,层上的节点数都达到最大值,即在满二叉树的第A层上有2k-1个节点,且深度为m的满二叉树有2m-1个节点。

11.BB。【解析】耦合是指模块间相互连接的紧密程度,内聚性是指在一个模块内部各个元素彼此之间接合的紧密程序。高内聚、低耦合有利于模块的独立性。

12.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。

13.BB。【解析】引用模板函数和引用一般函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。

14.CC。【解析】编译程序和汇编程序缡于开发工具;操作系统属于系统软件;而教务管理系统属于应用软件。

15.C解析:本题考查的知识点是运算符重载。C++中规定,“=”运算符只能作为成员函数重载,故本题的选项C是错误的。

16.B解析:数据库技术的根本目的是要解决数据的共享问题;数据库需要操作系统的支持;数据库管理系统(DatabaseManagementSystem,DBMS),对数据库进行统一地管理和控制,以保证数据库的安全性和完整性。它是数据库系统的核心软件。

17.DD。【解析】本题考查引用调用,因为函数swap引用调用参数a,所以在swap函数中a的变化会改变主函数中a的值,即a自加1。但b的值并未改变。

18.D字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的。大写字母A~z是从65~90,小写字母a~z是从97~122。所以只要变量c大于等于a并月小于等于z就能保证其为小写字母。

19.A解析:注意本题有个陷阱,马虎的考生将纷纷落马。本来、while中的表达式应为k==1,而本题却为k=1,是赋值表达式而不是逻辑表达式。因此,编译器将其值一直认为是1,因此表达式一直为真,陷入无限次的循环。

20.B本题考查类的默认构造函数和自定义的构造函数、本题中MyClass(intn):value(n){}为自定义的构造函数,加上默认构造函数,一共有2个构造函数。

21.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

22.BB。【解析】本题考查scanf函数的用法,其调用格式为:\r\nscanf(格式字符串,输入项地址表);\r\n功能是按格式字符串中规定的格式,在键盘上输入各输入项的数据,并依次赋给各输入项。\r\n当需要从键盘上输入数据时,直到按下回车键,scanf函数才会接受从键盘输入的数据。选项B中,每一个变量输入后都有一个空格是不正确的。

23.AA。【解析】本题考查const修饰符的作用。注意,const位置不同,其修饰的部分也是不同的。本题中const修饰的是ptr所指的对象本身,所以,ptr可以重新指向新的对象,而ptr->a则无法被更新。

24.operatoroperator解析:C++中,运算符函数的函数名是由运算符前加关键词operator构成的,在声明运算符或调用运算符时都可以用这个名称。

25.10001000解析:本题考核引用作为函数参数的使用。引用作为形参时,它实际上就是实参,函数对形参的访问和修改就是对实参的访问和修改,题中函数fun对形参的操作是自增2倍,所以经过函数调用后,实参的值自增2倍,即输出1000。

26.解决二义性问题解决二义性问题解析:C++中可以将共同基类设置为虚基类,这时从不同的路径继承过来的该类成员在内存中只有一个副本。这样就解决同名成员的二义性。

27.true。true。解析:本题考查的是对于逻辑运算符号的理解,”||”运算符的任何一边取值为真,则整个运算结果为真。

28.44解析:此题考查的是局部静态变量。局部静态变量是在函数或语句块中以static关键字定义的局部变量。其作用域和普通局部变量一样只在定义函数或语句块中有效,但生存周期却是和全局变量一样,一直延续到程序结束。故第一次调用f(),局部静态变量s变为2。第二次调用f(),s又自增2,所以函数f的返回值是4。

29.友元函数友元函数解析:C++的友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间数据共享的机制。一个类可以利用friend将一般函数、其他类成员函数或者其他类声明为友元。友元的声明可以放在类的任何一个区域。定义须在类外声明在公有私有部分均可。

30.内聚内聚

31.加工加工解析:数据流图是从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程,其中的每一个加工对应一个处理模块。

32.~MyClass()

33.拷贝构造拷贝构造解析:本题考核拷贝构造函数的定义。拷贝构造函数是一种特殊的成员函数,它的作用是使用一个已存在的对象来初始化一个被创建的同类的对象。

34.c3=c1+c2

35.共享性共享性解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。

36.(1)应改为“assert(sizeof(s1)==4);”。

\n(2)应改为“assert(sizeof(s2)==1O);”。

\n(3)应改为“assert(sizeof(s3)==1);”。

\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。

37.(1)应改为“TC::TC”。(2)应改为“voidTC::display”。(3)应改为“TC::~TC”。【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。38.(1)应改为“catch(char*s)”。(2)应改为“cateh(inti)”。(3)应改为“catch(…)”。【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。39.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

40.(1)应添加“public:”。

\n(2)“inti”应改为“inti(10);”。

\n(3)“i++;”应改为“i--;”。

\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问。故应在构造函数前添加“public:”,否则该类无法被实例化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则循环永远不会退出。41.(1)“staticintn=O”应改为“staticintn;”。(2)“intCO::n;”应改为“intCO::n=0;”。(3)“cout<<c.n<<endl;”应改为“cout<<c->n<<endl;”。【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用c的对象,应改为“cout<<c->n<<endl;”。

42.(1)应改为“ein.getline(str,120,?);”。

\n(2)应改为“while(str[i])”。

\n(3)应改为“if(str[i]>=a&&str[i]<=2)”。

\n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个数,终止标志字符)”,所以第1处改为“cin.getline(str,120,?);”。第2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的“if(str[i]>=a)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)”。

43.(1)应改为“usingnamespacestd;”。

\n(2)应改为“outl.open('1.txt',ios::binary|ios::app);”。

\n(3)应改为“out1.put(s[i]);”。

\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open('1.txt',binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open('1.txt',ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。

44.(1)应改为“catch(char*s)”。(2)应改为“cateh(inti)”。

(3)应改为“catch(…)”。

【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。45.(1)应改为“ein.getline(str,120,?);”。

(2)应改为“while(str[i])”。

(3)应改为“if(str[i]>=a&&str[i]<=2)”。

【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个数,终止标志字符)”,所以第1处改为“cin.getline(str,120,?);”。第2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的“if(str[i]>=a)”语句是判断字符str[i]是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)”。

46.(1)应添加“BA(intm){a=m;}”。

(2)应添加“PAl(intm,intn):BA(n){b=m;}”。(3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。(4)应添加“cout<<geta<<""<<getb

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论