二级C++-204
(总分87,考试时间90分钟)
一、选择题
1. 有如下程序:
#include <iostream>
using namespace std;
int main()
{
cout.fill("*");
cout.width(6);
cout.fill("#");
cout<<123<<end1;
return 0;
}
执行后的输出结果是
A. ###123        B. 123###
C. ***123        D. 123***
2. 控制格式输入/输出的操作子中,设置域宽的函数是
A. ws        B. oct
C. setfill(int)        D. setw(int)
3. 下面关于类概念的描述中____是错误的。
A. 类是抽象数据类型的实现        B. 类是具有共同行为的若干对象的统一描述体
C. 类是创建对象的样板        D. 类就是C语言中的结构体类型
4. 对于模板定义关键字class和typename说法不正确的是______。
A. 程序中的class并不能都替换为typename
B. class和typename都可互相替换
C. 程序中的typename都能替换为class
D. 程序中的部分class可以替换为typename
5. 有如下程序:
#include<iostream>
using namespace std;
class TlestClass
{
int n;
public:
TestClass(int k):n(k){}
int get(){return n;}
int get()const{return n+1;}
};
int main()
{
TestClass p(5);
colast TestClass q(6);
cout<<p.get()<<q.get();
return 0;
}
执行后的输出结果是____。
A. 55        B. 57
C. 75        D. 77
6. 下列叙述中正确的是
A. 接口复杂的模块,其耦合程度一定低        B. 耦合程度弱的模块,其内聚程度一定低
C. 耦合程度弱的模块,其内聚程度一定高        D. 上述三种说法都不对
7. 下列关于类模板的描述中,错误的是______。
A. 类模板的成员函数都是模板函数        B. 可以为类模板参数设置默认值
C. 类模板描述了一组类        D. 类模板中只允许有一个类型参数
8. 负责数据库中查询操作的数据库语言是______。
A. 数据定义语言        B. 数据管理语言
C. 数据操纵语言        D. 数据控制语言
9. 有函数模板声明和一些变量定义如下:
template<class T1,class T2,class T3>T1 sum(T2,T3);
double d1,d2;
则下列调用中,错误的是______。
A. sum<double,double,double>(d1,d2);
B. sum<double,double>(d1,d2);
C. sum<double>(d1,d2);
D. sum(d1,d2);
10. C++流中重载了运算符<<,它是一个______。
A. 用于输出操作的成员函数        B. 用于输入操作的成员函数
C. 用于输入操作的非成员函数        D. 用于输出操作的非成员函数
11. 下列叙述中错误的是______。
A. gets函数用于从终端读人字符串
B. getchar函数用于从磁盘文件读入字符
C. fputs函数用于把字符串输出到文件
D. fwrite函数用于以二进制形式输出数据到文件
12. 要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是____。
A. MyClass p=MyClass;
B. MyClass p=new MyClass;
C. MyClass &p=new MyClass
D. MyClass a,&p=a;
13. 有如下程序;
#include<iostream>
using namespace std;
clas Basel{
public:
Basel(int d){cout<<d;}
—Basel(){)
};
class Base2{
public:
Base2(int d){out<<d;}
~Base2(){}
};
class Derived:public Base1,Base2{
public:
Derived(int a,int b,int c,intd):
Base1(b),Base2(a),b1(d),b2(c){}
private:
int b1;
int b2;
};
int main(){
Derived d(1,2,3,4);
return 0;
}
运行时的输出结果是______。
A. 1234        B. 2134
C. 12        D. 21
14. 在设计程序时,应采纳的原则之一是____。
A. 不限制goto语句的使用        B. 减少或取消注解行
C. 程序越短越好        D. 程序结构应有助于读者理解
15. 下列叙述中正确的是______。
A. 有一个以上根结点的数据结构不一定是非线性结构
B. 只有一个根结点的数据结构不一定是线性结构
C. 循环链表是非线性结构
D. 双向链表是非线性结构
16. 在数据库设计中,将E-R图转换成关系数据模型的过程属于______。
A. 需求分析阶段        B. 概念设计阶段
C. 逻辑设计阶段        D. 物理设计阶段
17. 下列关于赋值运算符“=”重载的叙述中,正确的是______。
A. 赋值运算符只能作为类的成员函数重载
B. 默认的赋值运算符实现了“深层复制”功能
C. 重载的赋值运算符函数有两个本类对象作为形参
D. 如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符
18. 没有如下三个关系表:
下列操作中正确的是______。
A. T=R∩S        B. T=R∪S
C. T=R×S        D. T=R/S
19. 下面关于break语句的描述中,不正确的是
A. break可以用于循环体内
B. break语句可以在for循环语句中出现多次
C. break语句可以在switch语句中出现多次
D. break语句可用于if条件判断语句内
20. 面向对象程序设计思想的主要特征中不包括____。
A. 继承性        B. 功能分解,逐步求精
C. 封装性和信息隐藏        D. 多态性
21. 设有以下程序段:
int a[5]={0},*p,*q;
p=a;
q=a;
则下列选项中,合法的运算是____。
A. p+q        B. p-q
C. p*q        D. p%q
22. 下面程序的结果为____。
#include"iostream.h"
void change (int a,int b)
{
int temp;
temp=a;
a=b;
b=temp:
}
指针调用成员函数 void main()
{
int m,n;
m=8;
n=9;
change(m,n):
cout << m<<" "<< n << endl;
}
A. 89        B. 98
C. 程序有错误        D. 99
23. 已知主函数中通过如下语句序列实现对函数模板swap的调用:
int a[10],b[10];
swap(a,b,10);
下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是______。
A. template<typename T>void swap(T a[],T b[],int size);
B. template<typename T>void swap(int size,T a[],T b[]);
C. template<typename T1,typename T2>void swap(T1 a[],T2 b[],int size);
D. template<class T1,class T2>void swap(T1 a[],T2 b[],int size);
24. 已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是______。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。