2013年9月全国计算机等级《二级C++》命题预测试卷八
-
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义私有成员变量year、month、day。分别表示年、月、日,类型为int。请在注释1后添加适当的语句。
(2)完成构造函数,分别给year、month、day赋值,请在注释2后添加适当的语句。
(3)完成重载符号“十=”的定义,请在注释3后添加适当的语句。
(4)完成print打印函数,输出到屏幕和文件的格式相同,请在注释4后添加适当的语句。
注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。
程序正常运行,输出的结果为2008年11月813。
试题程序:
#include(iostream.h)
#include(fstream)
#include(iomanip)
#include
usingnamespacestd;
voidWriteFile(intc)
{
ofstreamout1;
out1.open("3.txt",ios_base::app);
out1<
out1.close;
}
voidWriteFile(char*str)
{
ofstreamoutl;
out1.open("3.txt",ios_base::app);
out1<
out1.close;
}
voidClearFile
{
ofstreamout1;
out1.open("3.txt");
out1.close;
}
classDate
{
public:
Date(inty,intm,intd)
{
//********1********
}
voidprint;
//********2********
{
month+=m;
inti=month/12:
intj=month%12;
if(j==0)
{year+=(i-1);
month=12;
}
else
{
year+=i:
month=j;
}
return*this;
}
private:
//********3********
};
voidDate::print
{
//********4********
WriteFile(year):
WriteFile("年");
WriteFile(month);
WriteFile("月");
WriteFile(day);
WriteFile("日");
}
intmain
{
ClearFile;
DateOly_day(2008,8,8);
Olyday+=3:
Oly_day.print;
return0;
}
-
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)用于计算在n范围内,能被7和11整除的所有整数的和(包括n在内)。
注意:不能修改程序的其他部分,只能补充sum函数。
试题程序:
#include
doublesum(intn)
{
}
voidmain()
{
cout<
cout<
cout<
return;
}
-
4种基本结构中,能简化大量程序代码行的是( )。
- A.顺序结构
- B.分支结构
- C.选择结构
- D.重复结构
-
有下列程序:
#include
voidmain( )
{
FILE*fp;inta[10]={1,2,3},i,n;
fp=fopen("dl.dat","w");
for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);
fprintf(fp,”\n”);
fclose(fp);
fp=open("dl.dat","r")
fscanf(fp,"%d",&n);
fclose(fp);
printf(”%d\n”,n);
}
程序的运行结果是( )。
- A.12300
- B.123
- C.1
- D.321
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行,并且使程序输出的结果为
0K
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include
classTC
{
public:
TC
{
a=b=0:
}
private:
inta,b;
};
classTCl:publicTC
{
public:
TC1
{
}
//******error******
virtualvoidfunc;
};
classTC2:publicTCl
{
public:
TC2
{
a=0:
b=0:
}
voidfunc
{
//******error******
cout<<"OK"
}
private:
inta;
intb;
};
voidmain
{
TC20bj;
//******error******
TCl*p=(TCl*)obj;
p->func;
}
-
有下列程序段:
charch:intk:
ch='a';k=12;
printf("%c,%d,",ch,ch,k);
printf("k=%d\n",k);
已知字符a的ASCIl十进制代码为97,则执行上述程序段后输出结果是( )。
- A.因变量类型与格式描述符的类型不匹配输出无定值
- B.输出项与格式描述符个数不符,输出为零值或不定值
- C.a,97,12k=12
- D.a,97,k=12
-
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。
Samplea[2],*p=newSample;
- A.0
- B.1
- C.2
- D.3
-
在数据库设计中,将E—R图转换成关系数据模型的过程属于( )。
- A.需求分析阶段
- B.概念设计阶段
- C.逻辑设计阶段
- D.物理设计阶段
-
程序流程图中带有箭头的线段表示的是( )。
- A.图元关系
- B.数据流
- C.控制流
- D.调用关系
-
有下列程序:
#include
structord
{intx,y;}dt[2]={1,2,3,4};
voidmain( )
{structord*p=dt;
printf("%d,",++P->x);printf("%d,",++P
->y);
}
程序的运行结果是( ).
- A.1,2
- B.2,3
- C.3,4
- D.4,1
-
C++语言中在C语言的基础上增加的特性不包括( )。
- A.结构
- B.引用
- C.类和对象
- D.静态成员函数
-
有下列程序:
#include
voidfun(int*a,int*b)
{int*C;
c=a;a=b;b=C;
}
voidmain( )
{intx=3,y=5,*p=&x,*q=&y;
fun(p,q);printf("%d,%d,",*P,*q);
fun(&x,&y);printf("%d,%d\n",*P,*q)
}
程序运行后的输出结果是( )。
- A.3,5,5,3
- B.3,5,3,5
- C.5,3,3,5
- D.5,3,5,3
-
原因排除法属于( )。
- A.软件调试方法
- B.黑盒测试方法
- C.白盒测试方法
- D.动态测试方法
-
下面程序的运行结果是( )。
#include
classbase{
protected:
inta;
public:
base(){cout<<"0";}
};
classbasel:virtualbase{
public:
basel(){cout<<"1";}
};
classbase2:virtualbase{
public:
base2(){cout<<"2";}
};
classderived:publicbasel,publicbase2{
public:
derived(){cout<<"3";}
};
voidmain()
{
derivedobj;
cout<
}
- A.0123
- B.3120
- C.0312
- D.3012
-
下列有关类继承的叙述中,错误的是( )。
- A.继承可以实现软件复用
- B.虚基类可以解决由多继承产生的二义性问题
- C.派生类构造函数要负责调用基类的构造函数
- D.派生类没有继承基类的私有成员
-
下面程序输出的结果为( )。
#include"iostream.h"
classA
{public:
- A(){cOUt<<"CLASSA"<
- ClaSSB:publicA {public:
- B(){cout<<"CLASSB"<
- B*q: q=newB;}
- A.CLASSB
- B.CLASSA
- CLASSB
- CLASSB
- CLASSB
- C.CLASSA
- A(){cOUt<<"CLASSA"<
-
有如下类定义:
classA{
char*a;
public:
- A( ):a(O){}
- A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间
- a=__; strcpy(a,aa); } ~A( ){delete[]a;} }; 横线处应填写的表达式是( )。
- A.Newchar[strlen(aa)+1]
- B.char[strlen(aa)+1]
- C.char[strlen(aa)]
- D.newchar[sizeof(aa)-1]
-
有以下程序:
classDate
{public:
Date(inty,intm,intd);
{year=Y;
month=m;
day=d;}
Date(inty=2000)
{year=y;
month=10;
day=1;}
Date(Date&d)
{year=d.year;
month=d.month;
day=d.day;}
voidprint()
{cout<
day<
private:
intyear,month,day;};
Datefun(Dated)
{Datetemp;
temp=d;
returntemp;}
intmain()
{Datedatel(2000,1,1),date2(0,0,O);
Datedate3(date1);
date2=fun(date3);
return0;}
程序执行时,Date类的复制构造函数被调用的次数是( )。
- A.2
- B.3
- C.4
- D.5
-
下列表示纯虚函数的成员函数是( )。
- A.virtualintfunc(int);
- B.voidfunc(int)=0;
- C.virtualvoidfunc=0;
- D.virtualvoidrune(int){}
-
有如下函数模板声明:
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)
-
有下列程序:
#include
voidmain( )
{intx;
scanf(”%d”,&x);
if(x<=3);else
if(x!=10)printf("%d\n",x);
}
程序运行时,输入的值在哪个范围才会有输出结果( )。
- A.不等于10的整数
- B.大于3且不等10的整数
- C.大于3或等于10的整数
- D.小于3的整数
-
要定义整型数组x,使之包括初值为0的3个元素,下列语句中错误的是( )。
- A.intx[3]={0,0,0};
- B.intx[]={0};
- C.staticintx[3]={0);
- D.intx[]={0,0,0};
-
有下列程序:
#include
intfun(intx,inyy)
{if(x==y)return(x);
elsereturn((x+y)/2);
}
voidmain()
{inta=4,b=5,C=6;
printf("%d\n",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是()。
- A.3
- B.6
- C.8
- D.12
-
下列叙述中错误的是( )。
- A.gets函数用于从终端读入字符串
- B.getchar函数用于从磁盘文件读入字符
- C.fputs函数用于把字符串输出到文件
- D.fwrite函数用于以二进制形式输出数据到文件
-
若变量已正确定义并赋值,以下符合C++语言语法的表达式是( )。
- A.a:=b+1
- B.a=b=c+2
- C.intl8.5%3
- D.a=a+7=c+b
-
计算机能直接执行的程序是( )。
- A.源程序
- B.目标程序
- C.汇编程序
- D.可执行程序
-
有下列程序:
#include
voidmain( )
{
intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{
Case0:a++;break;
case1:b++break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf(”a=%d,b=%d\n”,a,b);
}
程序的运行结果是( )。
- A.a=1,b=0
- B.a=2,b=2
- C.a=1,b=1
- D.a=2,b=1
-
有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
- A.并
- B.自然连接
- C.笛卡儿积
- D.交
-
有以下类定义:
classMyClass
{
private:
intid;
chargender;
char*phone;
public:
MyClass():id(0),gender('#'),phone(NULl){}
MyClass(intn0,charge='#',char*ph=NULL)
{id=no;gender=ge;phone=ph;}
};
下列类对象定义语句中错误的是( )。
- A.MyClassmyObj;
- B.MyClassmyObj(11,"13301111155");
- C.MyClassmyObj(12,'m');
- D.MyClassmyObj(12);
-
有如下程序:
#included
usingnamespacestd;
classTestClass
{private:
intX,y;
public:
TestClass(inti,intj)
{x=i;
y=j;}
voidprint()
{cout<<"printl"<
voidprint()const
{cout<<"print2"<
intmain()
{constTestClassa(1,2);
print();
return0;}
该程序运行后的输出结果是( )。
- A.printl
- B.print2
- C.printlprint2
- D.程序编译时出错
-
有下列程序:
#include
structst
{intx,Y,date[2]={1,10,2,20};
voidmain( )
{structst*p=date;
printf("%d,",p->y);printf("%d\n",(++p)
->x);
}
程序的运行结果是( )。
- A.10,1
- B.20,1
- C.10,2
- D.20,2
-
算法的空间复杂度是指( )。
- A.算法程序的长度
- B.算法程序中的指令条数
- C.算法程序所占的存储空间
- D.算法执行过程中所需要的存储空间
-
若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为( )。
- A.a
- B.AA.a
- C.a{}
- D.AA:a{}
-
下列关于运行符重载的描述中,正确的是( )。
- A.运算符重载可以改变操作数的个数
- B.运算符重载可以改变操作数的优先级
- C.运算符重载可以改变运算符的结合性
- D.运算符重载可以使运算符实现特殊功能
-
已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为( )。
- A.1
- B.2
- C.3
- D.9
-
有如下函数模板定义:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
- A.FUN(9)
- B.FUN<9>
- C.FUN
(9) - D.FUN<9>(double)
-
下列叙述中正确的是( )。
- A.在模块化程序设计中,一个模块应该尽量多地包括与其他模块联系的信息
- B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节
- C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则
- D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法
-
在面向对象方法中,不属于“对象”基本特点的是( )。
- A.一致性
- B.分类性
- C.多态性
- D.标识唯一性
-
下列叙述中正确的是( )。
- A.一个算法的空间复杂度大,则其时间复杂度必定大
- B.一个算法的空间复杂度大,则其时间复杂度必定小
- C.一个算法的时间复杂度大,则其空间复杂度必定小
- D.上述三种说法都不对
-
下列排序方法中,最坏情况下比较次数最少的是( )。
- A.冒泡排序
- B.简单选择排序
- C.直接插入排序
- D.堆排序
-
有以下程序:
#include
usingnamespacestd;
classsample
{
private:
intn;
public:
sample(){}
sample(intm)
{
n=m:
}
sampleadd(samplesl,samples2)
{
this->n=s1.n+s2.n;
return(*this);
}
voiddisp()
{
cout<<"n="<
}
};
intmain()
{
samples1(10),s2(5),s3;
s3.add(s1,s2);
s3.disp();
return0:
}
程序运行后,输出的结果是( )。
- A.n=10
- B.n=5
- C.n=20
- D.n=15
-
已知数组arr的定义如下:
intarr[5]={1,2,3,4,5};下列语句中输出结果不是2的是( )。
- A.cout<<*arr+1<
- B.COUt<<*(arrt+1)<
- C.cout
- B.COUt<<*(arrt+1)<
- A.cout<<*arr+1<
-
源程序的文档化不包括( )。
- A.符号名的命名要有实际意义
- B.正确的文档形式
- C.良好的视觉组织
- D.正确的程序注释