二级C++-212
(总分:65.50,做题时间:90分钟)
一、选择题(总题数:40,分数:65.50)
1.在数据管理技术发展的三个阶段中,数据共享最好的是______。
(分数:1.00)
 A.人工管理阶段
 B.文件系统阶段
 C.数据库系统阶段 
 D.三个阶段相同
解析:[解析] 数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,
一直占据数据库领域的主导地位,所以选择C。
2.下列选项中,正确的C++表达式是______。
(分数:2.00)
 A.a+b=b+e
&+
 C.www++9
 D.a[3] 
解析:
3.下面关于运算符重载的描述错误的是______。
(分数:2.50)
 A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
 B.不是所有的运算符都可以进行重载
 C.运算符函数的调用必须使用关键字operator 
 D.在C++语言中不可通过运算符重载创造出新的运算符
解析:[解析] 例如“::”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字operator,而调用时可直接使用运算符。
4.每个C++程序中都必须有且仅有一个______。
(分数:2.50)
 A..类
 B.预处理命令
 C.主函数 
 D.语句
解析:[解析] 每个C++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。
5.面向对象程序设计思想的主要特征中不包括
(分数:2.00)
 A.继承性
 B.功能分解,逐步求精 
 C.封装性和信息隐藏
 D.多态性
解析:[解析] C++是一种面向对象的程序设计语言,它充分支持面向对象思想中的3个主要特
征:封装性,继承性、多态性。B选项所描述是结构化程序设计的思想。
6.有如下函数模板:
template <typename T, typename U>
T cast(U u) {return u;}
其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是______。
(分数:1.00)
 A.cast(i);
 B.cast<>(i);
 C.cast<char*, int>(i);
 D.cast<double, int>(i); 
解析:[解析] 本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。
7.软件详细设计产生的图如下:
该图是______。
(分数:2.50)
 A.N-S图
 B.PAD图
 C.程序流程图 
 D.E-R图
解析:[解析] 程序流程图基本图符有:控制流(用箭头表示)、加工步骤(用方框表示)、逻辑条件(用菱形表示)。有5种控制结构:顺序、选择、多分支选择、后判断重复型和先判断重复型。题目中为选择结构的程序流程图。
8.下面程序的输出结果是______。
#include<iostream.h>
#include<string.h>
void main()
字符串转数组怎么处理{
char p1[10],p2[10];
strcpy(p1,"abc");
strcpy(p2,"ABC");
char str[50]="xyz";
strcpy(str+2,strcat(p1,p2));
cout<<str;
}
(分数:1.00)
&abcABC
 B.zabcABC
&abcABC 
&abcABC
解析:[解析] 该函数的调用方式是strcpy(字符数组,字符串),其中字符串可以是串常量,也可以是字符数组。函数的功能是将字符串完整地复制到字符数组中,字符数组中原有内容被
覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串,复制时,连同结束标志/0一起复制;②连接前两个字符串都有结束标志"/0",连接后"符数组"中存储的字符串的结束标志"/0"被舍弃,只在目标串的最后保留一个"/0";③不能用赋值运算符=将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理,strcat(字符数组,字符串)的功能是把字符串连接到字符数组中的字符串尾端,并存储于字符数组中,字符数组中原来的结束标志,被字符串的第一个字符覆盖,而字符串在操作中未被修改。
9.有如下程序:
#include<iostream>
using namespace std;
void fun(int i) {cout<<"/int i";}
void fun(char e){cout<<"/char c";}
int main(){
fun(0);
fun("0");
retum 0;
}
运行后的输出结果是______。
(分数:1.00)
 A./int i/int i
 B./int i/char c 
 C./char c/int i
 D./char c/char c
解析:[解析] 本题考查的是重载函数的匹配。在main函数中,fun(0)中的参数是整数0,所以最佳匹配函数是fun(int i),即调用函数fun(int i),输出“/inti”;同样,fun("0")中的参数是字符"0",最佳匹配函数是fun(char c),所以调用函数fun(char c),输出”/charc”,选项B正确;答案为B选项。
10.设有定义charstr[80]以下不能将输人数据nrst/nsecond/<CR)读取到数组str的语句是 ____
(分数:2.00)
 (str,strlen(str));
 line(str,strlen(str));
 C.cin>>str;
 ad(str,strlen(str)); 
解析:[解析] 本题考查cin流对象的几种成员函数get,getline,read及流提取符>>的使用
规则。
11.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送______来实现。
(分数:1.00)
 A.调用语句
 B.命令
 C.中令
 D.消息 
解析:[解析] 在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。
12.有如下类定义:
class MyClass{
public:
______
private:
int data;
};
若耍为Myclass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClass类的对象obj,则横线处的声明语句应为______。
(分数:1.00)
 A.friend istream& operator>>(istream& is,MyClass&-a); 
 B.friend istream&operator>>(istream& is,MyClassa);
 C.istream&operator>>(istream&is,MyClass&a);
 D.istrcam&operator>>(istream&is,Myclass a);
解析:[解析] 重载输入、输出的声明必须是友元.传入的对象必须是地址,否则操作对象的值是没有意义的,
下面是重载输入运算符示例:(Dew C++)
#include<cstdlib>
#include<iostream>
using namespace std;
class MyClass{
public:
int dala;
public:
MyClass(int data);
friend istrcam&operator>>(istream&is,MyClass&obj);
};
MyClass::MyClass(int data){
data=data;
}
istream&operator>>(istream&is,MyClass&obj){
is>>obj.data;
return is;
}
int main(void)
{
MyClass obj (12);
cin>>obj;
cout<<endl;
cout<<obj.data;
system("PAUSE");
return EXIT SUCCESS;
}
13.若有如下程序:
#include<iostream>
using narnespace std;
class TestClass
{
public:
void who(){cout<<"TestClass"<<endl;}
};
class TestClassl: public TestClass
{
public:
void who(){cout<<"TestClass1"<<endl;}};
int main()
{
TestClass*p;
TcstClass1 obj1;
p=&obj1;
p->who();
return 0;
}
则该程序运行后的输出结果是______。
(分数:1.00)
 A.TestClassl 
 B.TestClass
 C.0
 D.无输出
解析:[解析] 程序中的TestClassl为TestClass的派生类,主函数maln中定义TestClass对象*p,TestClass1对象obj1,然后p引用obj1,执行p->who()则是调用基类中的who函数,输出TestClass。
14.计算数列第n项的函数定义如下:
int fa(int n){
if(n==0) return 0;
else if(n==1) return 1;
else return fa(n-1)+fa(n-2);
}
若执行函数调用表达式fa(3)时,返回的函数值为______。
(分数:1.00)
 A.0
 B.1
 C.2 
 D.3
解析:[解析] 本题考查的是递归函数。函数fa是一个递归函数,递归退出条件为n=0或1,否则为fa(n-1)+fa(n-2)。所以fa(3)展开如下:fa(3)=fa(2)+fa(1)=fa(1)+fa(0)+fa(1)=1+0+1=2。答案为C选项。
15.以下正确的描述为
(分数:2.00)
 A.每个C++语言程序必须在开头用预处理命令:

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