国家二级(C++)机试模拟试卷328
选择题
1.结构化程序设计的3种结构是( )。(B)
A. 顺序结构,分支结构,跳转结构
B. 顺序结构,选择结构,循环结构
C. 分支结构,选择结构,循环结构
D. 分支结构,跳转结构,循环结构
解析:程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。
2.有三个关系R、S和T如下:
(D)
A. 并
B. 自然连接
C. 笛卡尔积
D. 交
解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C错误。根据关系T可以很明显地看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D。
3.以下程序的输出的结果是( )。
#include
void main()
{
int a,b,c,d(5);
c=2,c+=10;
a=b=10:
a*=2:
b/=2:
C%=2:
cout<<a<<\\(A)
A. 20,5,0
B. 20,7,0
C. 20,5,1
D. 5,20,0
解析:c+=10使得c=12;a=b=10,a*=2使得a=20;b/=2,b=10/2,使得b=5;c=12%2=0,所以输出值20,5,0。
4.下列关于虚函数的说明中,正确的是( )。(B)
A. 从虚基类继承的函数都是虚函数
B. 虚函数不得是静态成员函数
C. 只能通过指针或引用调用虚函数
D. 抽象类中的成员函数都是虚函数
解析:在某基类中声明为vinual并在一个或多个派生类中被重新定义的成员函数。虚函数必须是基类的非静态成员函数,其访问权限可以是pro-tected或public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。
5.下列程序运行后的结果为( )。
#include
void main()
{
int a=1,b=2;
bool c=1:
A. false
B. true
C. 2
D. 1
解析:本题考查的是对于逻辑运算符号的理解,“||”运算符的任何一边取值为真,则整个运算结果为真。
6.重载输入流运算符“>>”必须使用的原型为( )。(A)
A. istream&operator>>(istream&,&);
B. istream&operator>>(istream,);
C. istream operator>>(istream,&);
D. operator>>(istream&,&);
解析:C++流的输入运算符“>>”和输出运算符“<>”须使用以下原型:istream&operator>>(istream&,&);。
7.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。(A )
A. 冒泡排序为n(n一1)/2
B. 简单插入排序为n
C. 希尔排序为n
D. 快速排序为n/2
解析:
8.关于运算符重载,下列表述中正确的是( )。(C)
A. C++已有的任何运算符都可以重载
B. 运算符函数的返回类型不能声明为基本数据类型
C. 在类型转换符函数的定义中不需要声明返回类型
D. 可以通过运算符重载来创建C++中原来没有的运算符
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。故本题答案为C。
9.程序执行后的输出结果是( )。
#include
void main()
{
char flag=’c’;
switch(flag)
{
case ’a’:cout<<\\(C)
A. 12
B. 23
C. 34
D. 45
解析:因为flag=’c’, 所以执行cout<<\\
10.有如下程序:
#include
using namespace std;
class Obj {
static int i;
public:
Obj() { i++; }
~Obj() { i–; }
static int getVal() { return i;}
};
int Obj::i=0;
void f() {Obj ob2; cout<<ob2.getVal(); }
int main() {
Obj ob1;
f();
Obj *ob3=new Obj; cout<getVal();
delete ob3; cout<<Obj::getVal();
return 0;
}
执行这个程序的输出结果是( )。(D)
A. 232
B. 231
C. 222
D. 221
解析:本题考查构造函数和析构函数的调用顺序,调用顺序为先构造的后析构,后构造的先析构。本题中先定义了一个对象ob1,会执行构造函数,那么i就变为了1;再执行函数f后,由于又定义了一个对象ob2,所以再次执行构造函数,i就变为了2,输出了2。函数执行完后执行析构函数,i变为了1,然后又定义了对象指针,i变为了2。释放ob3后,i变为了1,所以答案为D。
11.假定a=3,下列程序的运行结果是( )。
#include
int fun(int n);
voidmain()
{
cout<<“Please input
本文档预览:3600字符,共15709字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载