2015国家二级(C++)笔试标准预测试卷9
-
下面程序的运行结果是【 】。
#include <iostream.h>
double fun( double a, double b, char c='*' )
{
double d;
switch (c)
{
case '+':d=a+ b; break;
case '-':d=a-b; break;
case '*':d=a*b; break;
case '/':d=a/b; break;
}
return d;
}
void main()
{
double d=1.0;
d=d-fun(fun(2.5,3.5,'+'),fun(3,5),'/');
cout<<"d="<<d<<end1;
}
-
下列程序的输出结果是【 】。
#include <iostream>
using namespace std;
class base {
public:
int n;
base(int x) { n=x;}
virtual void set(int m) { n=m; cout<<n<<' ';}
};
class deriveA :public base {
public:
deriveA(int x):base(x) {}
void set(int m) { n+=m; cout<<n<<' ';}
};
class derive B: public base {
public:
derive B(int x):base(x) {}
void set(int m) { n+=m; cout<<n<<' ';}
};
int main()
{
derive A, d1(1);
derive B, d2(3);
base *pbase;
pbase=&d1;
pbase->set(1);
pbase=&d2;
phase->set(2);
return 0;
}
-
在下面横线上填上适当的语句,完成程序。
#include<iostream>
using namespace std;
class Base
{
int x;
public:
Base(int i) { x=i; }
~Base() { }
};
class Derived: public Base
{
public:
【 】 //完成类Derive 构造函数的定义
};
int main()
{
Derived Obj();
return 0;
}
-
已知数组a中的元素个数为n,下列语句的作用是将下标为i的元素移动到下标为i-1的单元,其中1≤i<n。例如,当n=4,a中原有数据为1,2,3,4时,则移动后a中元素变为2,3,4,4。请将语句补充完整:
for(int i=0;i<n-1;i++) a[i]=a[【 】];
-
有如下程序:
#include<iostream.h>
void main()
{
int x=2,y=3,a,b,c,d;
a=(x++>=--y);
b=(x==++y);
c=(x--!=y);
d=(++x>y--);
Cout<<a<<b<<c<<d<<end1;
}
则程序执行后变量a,b,c,d的值分别是【 】。
-
下面程序的输出结果为【 】。
#include<iostream.h>
f(int a)
{int b=0;
static int c=3;
b++; c++;
return(a+ b+ c);
}
void main()
{int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<end1;
}
-
设置虚基类的目的是解决二义性问题,通过用关键字【 】表示虚基类。
-
静态数据成员在定义或说明时,要在前面加上关键字【 】;静态成员函数的实现中,不能直接引用类中说明为非静态的成员。
-
设有定义语句:int a=12;,则表达式a*=2+3的运算结果是【 】。
-
下列程序的输出结果为【 】。
include<iostream.h>
voidmain()
{
inta []={10,20,30,40},*pa=a;
int*&ph=pa;
Pb++;
cout<<*pa<<end1;
}
-
【 】的目的是检查模块是否正确的组合在一起,是否能够实现规格说明文档对产品功能的要求。
-
在数据库的三级模式体系结构中,外模式与概念模式之间的映像,实现了数据库的【 】独立性。
-
一棵二叉树第八层(根结点为第一层)的结点数最多为【 】个。
-
关系数据模型由关系数据结构、关系操作集合和【 】三大要素组成。
-
【 】技术是将数据和行为看成是一个统一的整体,使一个软件成分,即所谓的对象。
-
如果一个函数带有参数说明,则参数的默认值应该在( )中给出。
- A.函数定义
- B.函数声明
- C.函数定义或声明
- D.函数调用
-
下列函数参数默认值定义错误的是( )。
- A.f(int x,int y=O)
- B.fun(int x=100)
- C.f(int x=0,int y)
- D.fun(int x=f())(函数f()已经定义)
-
MyClock 类的拷贝构造函数的声明语句为( )。
- A.MyClock&(MyClock x)
- B.MyClock(MyClock x)
- C.MyClock(MyClock &x)
- D.MyClock(MyClock *x)
-
有函数char fun(char *p){ return p; }该函数的返回值是( )。
- A.编译出错
- B.形参p中存放的地址值
- C.一个临时存储单元的地址
- D.形参p自身的地址值
-
下列说法正确的是( )。
- A.int( *p)[n); 是把p定义为整型变量,它指向不知数据类型的一维数组
- B.int( *p)(); 是把p定义为整型指针
- C.int *p[n); 定义指针数组p,每个指针指向一个整型变量
- D.int *p(); p为指向函数的指针,函数返回值为整型
-
下面程序的输出结果是( )。 #include<iostream> using namespace std; void main() { int a=18; int * p=&a; cout<<* p;}
- A.18
- B.以十进制输出变量a的地址
- C.以十进制输出p的地址
- D.以十六进制输出a的地址
-
输入流对象是输出流的源头,下面( )不是输入流类。
- A.cin
- B.istream
- C.ifstream
- D.istrtream
-
下面程序的运行结果是( )。 #include<iostream> using namespace std; class A { public: virtual~A() { cout<<"call A::~A()"<<endl;} }; class B:public A { char * p; public: B(int i) { p=new char[i];} ~B() { delete(p); cout<<"call B::~B()"; } }; void main() { A * a=new B(8); delete a; }
- A.call B::~B()call A::~A()
- B.call B::~B()
- C.call A::~A()
- D.call A::~A()call B::~B()
-
下面程序的输出结果是( )。 #include<iostream> using namespace std; template<class T> T max(T x,T y) { return(x>=y ? x:y);} void main() { cout<<max(5,8)<<endl; cout<<max("zhangsan","lisi"); }
- A.8 zhangsan
- B.8 lisi
- C.5 zhangsan
- D.5 lisi
-
关于成员函数的重载,说法正确的是( )。
- A.就是在类中设计多个函数名相同,参数个数及参数类型也相同的函数
- B.析构函数可以重载
- C.函数重载,要求函数名相同,但参数个数不同,或参数相同,但其类型不同
- D.构造函数不可重载
-
在基类中有定义的纯虚函数,它要求在派生类中定义,而且基类不能用以说明对象,则该类为( )。
- A.虚基类
- B.抽象类
- C.虚函数类
- D.模板类
-
关于继承的目的和作用,说法不正确的是( )。
- A.继承是为了重复利用父类的可用代码,避免重复劳动
- B.继承可以增加自己的父类不能实现的功能的代码,使子类的功能更完美,提高程序设计效率
- C.子类可以继承父类的函数和数据,以便重复使用
- D.子类为了改造父类
-
对于类的私有成员、公有成员,不正确的是( )。
- A.私有成员只对类的内部,不对外部
- B.公有成员也叫接口,是与外部联系的通道
- C.私有成员主要对数据成员而言,当然有些成员函数也是私有的
- D.类的私有成员、公有成员只是相对而言,可以随时改变
-
对于下面程序,选项正确的是( )。 #include<iostream> using namespace std; class point{ public: void setpoint(unsigned, unsigned); void getpoint(void); private: unsigned x; unsigned y; }; void point::setpoint(unsigned x, unsigned y) { point::x=x; point::y=y; } void point::getpoint(void) { cout<<"x:"<<x<<" "<<"y:"<<y<<endl;} void main(void) { point p1,*p2;p2=π p1.setpoint(20,10); p1.getpoint(); p2->setpoint(1,2); p2->getpoint(); }
- A.该程序编译正确,能输出正确结果
- B.该程序中 setpoint() 形式参数不应为x、y,这样与程序体中的x、y其实是一个变量了
- C.该程序中的 setpoint() 程序体中的“point::x、point::y”应该改为x、y
- D.错误在于主函数中的“p2=&p1;”上,应该改为p2=p1;
-
下面程序的输出结果是( )。 #include<iostream> using namespace std; void swap(int x[2]) { int t; t=x[0]; x[0]=x[1]; x[1]=t; } void main() { int a[2]={4,8}; swap(a); cout<<a[0]<<" "<<a[1]; }
- A.4 8
- B.8 4
- C.4 4
- D.8 8
-
下列说法正确的是( )。
- A.字符型数组与整型数组可通用
- B.字符型数组与字符串其实没有什么区别
- C.当字符串放在字符数组中时,要求字符数组长度比字符串长1个单元,要放字符串终结符'\0'
- D.字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结果没区别
-
下列一维数组定义正确的是( )。
- A.x=5;int num[x];
- B.const iht x=5;float num[x];
- C.const float x=5;int num[x];
- D.const int x;x=5;intnum[x];
-
下列程序写法不正确的是( )。
- A.func1(){…func2(){…}…}
- B.func1(){…}func2(){…}
- C.func2();func1(){…func2();…}func2(){…}
- D.func1(){…func1();…}
-
有如下程序: #include<iostream> using namespace std; int fun(int a, int b) {return(++a*b++);} void main() { int x=3,y=4,z=5,r; r=fun (fun (x,y),z); cout<<r>>endl; cout<<x<<endl; cout<<y<<endl; } 该程序的输出的结果是( )。
- A.85 3 4
- B.60 3 4
- C.126 4 5
- D.85 4 5
-
下列关于i的输出值,正确的是( )。
- A.#include<iostream> using namespace std; void main() { for(int i=0;i<=3;i++) i++; cout<<i; { 则输出值为5。
- B.A程序的输出值为6
- C.#include<iostream> using namespace std; void main() { for(int i=0;i<=3;i++) { i++; cout<<i; } } 则输出值为13。
- D.C程序的输出值为5
-
关于函数的调用,下面不正确的是( )。
- A.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行
- B.函数的调用可以在任意函数之间进行,只要有需要
- C.一个函数可以自己调用自己
- D.函数返回时可以不必带回值,这时函数在定义时其类型应用void标示
-
对应于“int a, b; float c; scanf ("a=% d, b=% f c= % d", &a, &c, &b);”的输入是 ( )。
- A.452146
- B.45,67,89
- C.s=45;b=67 c=89
- D.a=45,b=67,c=89
-
对于while、do…while循环结构,正确的说法是( )。
- A.只是表达形式不同
- B.do…while 结构中的语句至少执行一次
- C.while 结构中的语句至少执行一次
- D.条件成立时,它们有可能一次也不执行
-
链表不具有的特点是( )。
- A.不必事先估计存储空间
- B.可随机访问任一元素
- C.插入删除不需要移动元素
- D.所需空间与线性表长度成正比
-
关于逻辑运算符的说法,正确的是( )。
- A.它们都是双目运算符,优先级相同
- B.语句“int a = 0, i = l, b; b = a&&i++;”执行后, i的值为2
- C.语句“int a = 1, i = l, b; b = a||++;”执行后,i的值为2
- D.语句“int a = 1, i = l, b; b = a&&i++;”执行后, i的值为2
-
C++程序设计语言是( )。
- A.完全的面向对象的程序设计语言
- B.低级语言
- C.既是面向对象的程序设计语言,又是结构化程序设计语言
- D.结构化程序设计语言
-
下列叙述中,正确的是( )。
- A.软件就是程序清单
- B.软件就是存放在计算,机中的文件
- C.软件应包括程序清单及运行结果
- D.软件包括程序、文档和数据
-
最常用的一种基本数据模型是关系数据模型,它的表示应采用( )。
- A.树
- B.网络
- C.图
- D.二维表
-
需求分析阶段的任务是确定( )。
- A.软件开发方法
- B.软件开发工具
- C.软件开发费用
- D.软件系统功能
-
数据库的故障恢复,一般是由( )。
- A.数据流图完成
- B.数据字典完成
- C.DBA完成
- D.PAD图完成
-
循环链表的主要优点是( )。
- A.不再需要头指针了
- B.从表中任一结点出发都能访问到整个链表
- C.在进行插入、删除运算时,能更好地保证链表不断开
- D.已知某个结点的位置后,能够容易地找到它的直接前趋
-
下列数据结构中,按“先进后出”原则组织数据的是( )。
- A.线性链表
- B.栈
- C.循环链表
- D.顺序表
-
用链表表示线性表的优点是( )。
- A.便于随机存取
- B.花费的存储空间较顺序存储的大
- C.便于插入和删除操作
- D.数据元素的物理顺序与逻辑顺序相同
-
根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分成( )。
- A.动态结构和静态结构
- B.紧凑结构和非紧凑结构
- C.线性结构和非线性结构
- D.内部结构和外部结构
-
在软件测试设计中,软件测试的主要目的是( )。
- A.实验性运行软件
- B.证明软件正确
- C.演示软件的正确功能
- D.发现软件错误而执行程序