2020年全国计算机等级考试二级c++上机题库(2)
-
以下程序设计功能是:将结构体变量time 中的内容写到文件中。
#include <iostream>
using namespace std;
struct date
{
int year;
int month;
int day;
}
int main ( )
{
date time = { 2005, 1, 1 };
ofstream outdate;
outdate.open( "d:\\date.txt", ios :: binary );
outdate.write(____________, sizeof( tt ) );
outdate.close();
return 0;
}
则程序中空白处应该填入的语句为【 】。
-
使用VC6打开考生文件夹下的工程test21_3,此工程包含一个源程序文件test21_3.cpp,其中定义了用于表示长方形的类CRectangle,但类CRectangle的定义并不完整。请按要求完成下列操作,将类CRectangle的定义补充完整。
(1)定义CRectangle的构造函数,函数含参数dx,dy,da和db,它们都是double型的数据,请将类数据成员x,y, a和b初始化,并输出“CRectangle Constructed.”(另起一行输出该文字)。请在注释“//**1**之后添加适当的语句。
(2)完成类CRectangle的成员函数getperimeter()的定义,将以a和b为边的矩形周长的值返回,请在注释“//**2**”之后添加适当的语句。
(3)完成类CRectangle的成员函数getarea()的定义,将以a和b为边的矩形面积的值返回,请在注释“//**3**”之后添加适当的语句。
(4)完成类CRectangle的友元函数friend double dist(CRectangle& rt)的定义,先定义两个double型的临时变量tx和ty,然后将参数对象rt的数据成员x与a的一半相加,y与b的一半相加,分别赋值给tx和ty,最后求出tx与ty的平方和的值之后将它的平方根返回,将请在注释“//**4**”之后添加适当的语句。
输出结果如下:
CRectangle Constructed.
Down_Left corner point is:(100,50)
a=1200,b=700
Perimeter of this rectangle is:3800
Area of this rectangle is:840000
The Distance is:806.226
CRectangle Constructed.
Down_Left corner point is:(200,150)
a=2000,b=800
Perimeter of this rectangle is:5600
Area of this rectangle is:1.6e+006
The Distance is:1320.04
CRectangle Destructed.
CRectangle Destructed.
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test21_3.cpp清单如下:
#include<iostream.h>
#include<math.h>
class CRectangle
{
private:
double x;
double y;
double a;
double b;
public:
CRectangle()
{
cout<<"\nCRectangle Constructed."<<endl;
}
CRectangle(double dx, double dy, double da, double db)
{
//**1**
a=da;
b=db;
cout<<"\nCRectangle Constructed."<<endl;
}
~CRectangle ( )
{
cout<<"CRectangle Destructed."<<endl;
}
void putxy(double dx, double dy){ x=dx; y=dy;}
void putab(double da, double db)( a=da; b=db;}
double getx(){ return x;}
double gety(){ return y;}
double geta(){ return a;}
double getb(){ return b;}
double getperimeter()
{
//**2**
}
double getarea()
{
//**3**
}
friend double dist(CRectangle& rt);
};
double dist(CRectangle& rt)
{
//**4**
ty=rt.y+rt.b/2.0;
return sqrt(tx*tx+ty*ty);
}
void main()
{
CRectangle rect;
rect.putxy(100.0, 50.0);
rect.putab(1200.0, 700.0);
cout<<"Down_Left corner point is: ("<<rect.getx() <<", "<<rect.gety()<<")" <<endl;
cout<<"a= "<<rect.geta()<<", b="<<rect.getb() <<endl;
cout<<"Perimeter of this rectangle is: "<<rect.getperimeter()<<endl;
cout<<"Area of this rectangle is:"<<rect.getarea()<<endl;
cout<<"
-
下列说法中错误的是( )。
- A.公有继承时基类中的public成员在派生类中仍是public成员
- B.私有继承时基类中的protected成员在派生类中仍是protected成员
- C.私有继承时基类中的public成员在派生类中仍是private成员
- D.保护继承时基类中的public成员在派生类中仍是protected成员
-
下面的函数模板定义中错误的是( )。
- A.template<class Q>
- B.template<class Q> QF(Qx){return Q-x;} QF(Qx){return x+x;}
- C.template<class T>
- D.template<class T> TF(Tx){return x*x;} boolP(Tx){return X>1;}
-
有关构造函数的说法不正确的是( )。
- A.构造函数名字和类的名字一样
- B.构造函数在说明类变量时自动执行
- C.构造函数无任何函数类型
- D.构造函数有且只有一个
-
软件需求分析阶段的工作,可以分为四个方面:需求获取,需求分析,编写需求规格说明书,以及
- A.阶段性报告
- B.需求评审
- C.总结
- D.都不正确
-
关系模型允许定义3类数据约束,下列不属于数据约束的是
- A.实体完整性约束
- B.参照完整性约束
- C.域完整性约束
- D.用户自定义的完整性约束
-
while和do-while循环的主要区别是
- A.do-while的循环体至少无条件执行一次
- B.while的循环控制条件比do-while的循环控制条件更严格
- C.do-while允许从外部转到循环体内
- D.do-while的循环体不能是复合语句
-
建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。
- A.派生类、成员对象类、基类
- B.成员对象类、基类、派生类
- C.基类、成员对象类、派生类
- D.基类、派生类、成员对象类
-
算法的空间复杂度是指
- A.算法程序的长度
- B.算法程序中的指令条数
- C.算法程序所占的存储空间
- D.算法执行过程中所需要的存储空间
-
下列哪个是C++语言的有效标识符?
- A.No1
- B.No.1
- C.12345
- D.int
-
表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是
- A.showbase( )和eof( )
- B.showpoint( )和eof( )
- C.showpoint( )和bad( )
- D.showpoint( )和good( )
-
关于友元,下列说法错误的是
- A.如果类A是类B的友元,那么类B也是类A的友元
- B.如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员
- C.友元关系不能被继承
- D.如果类A是类B的友元,那么类A的所有成员函数都是类B的友元函数
-
在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。
- A.O(n)
- B.O(n2)
- C.O(1092n)
- D.0(n1092n)
-
阅读下面程序:#include <iostream.h>fun (int a, int b){int c;c=a+b;return c;}void main(){int x=6, y=7, z=8, r;r=fun( (x--, y++, x+y), z--);cout<<r<<end1;}则该程序的输出结果是( )。
- A.11
- B.20
- C.21
- D.31
-
设有两个串p和q,求q在p中首次出现位置的运算称为( )。
- A.连接
- B.模式匹配
- C.求子串
- D.求串长
-
当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。
- A.任何
- B.公有或保护
- C.保护或私有
- D.私有
-
判断char型变量c是否为小写字母的正确表达式是
- A.‘a’<=c<=‘z’
- B.(c>=A)&&(c<=z)
- C.(‘a’>=c)||(‘2’<=c)
- D.(c>=‘a’)&&(c<=‘z’)
-
某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
- A.10
- B.8
- C.6
- D.4
-
数据库系统的核心是
- A.数据库
- B.数据库管理系统
- C.模拟模型
- D.软件工程
-
下列关于严格控制goto语句使用的理解中,错误的是( )。
- A.用一个非结构化的程序设计语言实现一个结构化的构造
- B.若不使用goto语句会使功能模糊
- C.在某种可以改善而不是损害程序可读性的情况下
- D.goto语句可以完全不用
-
下列描述中,( )是抽象类的特性。
- A.可以说明虚函数
- B.可以进行构造函数重载
- C.可以定义友元函数
- D.不能说明其对象
-
下面关于类和对象的描述中,错误的是
- A.类就是C语言中的结构体类型,对象就是C语言中的结构体变量
- B.类和对象之间的关系是抽象和具体的关系
- C.对象是类的实例,一个对象必须属于一个已知的类
- D.类是具有共同行为的若干对象的统一描述体
-
已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是
- A.堆排序
- B.直接插入排序
- C.快速排序
- D.直接选择排序
-
多继承的构造顺序可分为如下四步:
①所有非虚基类的构造函数按照它们被继承的顺序构造
②所有虚基类的构造函数按照它们被继承的顺序构造
③所有子对象的构造函数按照它们声明的顺序构造
④派生类自己的构造函数体
这四个步骤的正确顺序是( )。
- A.④③①②
- B.②④③①
- C.②①③④
- D.③④①②
-
与数学式子
对应的C++语言表达式是
- A.3*x^n/(2*x-1)
- B.3*x**n/(2*x-1)
- C.3*pow(x,n)*(1/(2*x-1))
- D.3*pow(n,x)/(2*x-1)