二级C++212文档格式.docx
《二级C++212文档格式.docx》由会员分享,可在线阅读,更多相关《二级C++212文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
D.语句
[解析]每个C++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。
5.面向对象程序设计思想的主要特征中不包括
A.继承性
B.功能分解,逐步求精
C.封装性和信息隐藏
D.多态性
[解析]C++是一种面向对象的程序设计语言,它充分支持面向对象思想中的3个主要特征:
封装性,继承性、多态性。
B选项所描述是结构化程序设计的思想。
6.有如下函数模板:
template<typenameT,typenameU>
Tcast(Uu){returnu;
}
其功能是将U类型数据转换为T类型数据。
已知i为int型变量,下列对模板函数cast的调用中正确的是______。
A.cast(i);
B.cast<>(i);
C.cast<char*,int>(i);
D.cast<double,int>(i);
[解析]本题考查函数模板的基本运用,属于基础知识。
函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。
函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。
所以本题答案为D。
7.软件详细设计产生的图如下:
该图是______。
A.N-S图
B.PAD图
C.程序流程图
D.E-R图
[解析]程序流程图基本图符有:
控制流(用箭头表示)、加工步骤(用方框表示)、逻辑条件(用菱形表示)。
有5种控制结构:
顺序、选择、多分支选择、后判断重复型和先判断重复型。
题目中为选择结构的程序流程图。
8.下面程序的输出结果是______。
#include<iostream.h>
#include<string.h>
voidmain()
{
charp1[10],p2[10];
strcpy(p1,"
abc"
);
strcpy(p2,"
ABC"
charstr[50]="
xyz"
;
strcpy(str+2,strcat(p1,p2));
cout<<str;
}
A.xyzabcABC
B.zabcABC
C.xyabcABC
D.yzabcABC
[解析]该函数的调用方式是strcpy(字符数组,字符串),其中字符串可以是串常量,也可以是字符数组。
函数的功能是将字符串完整地复制到字符数组中,字符数组中原有内容被覆盖。
使用该函数时注意:
①字符数组必须定义得足够大,以便容纳复制过来的字符串,复制时,连同结束标志/0一起复制;
②连接前两个字符串都有结束标志"
/0"
,连接后"
符数组"
中存储的字符串的结束标志"
被舍弃,只在目标串的最后保留一个"
;
③不能用赋值运算符=将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理,strcat(字符数组,字符串)的功能是把字符串连接到字符数组中的字符串尾端,并存储于字符数组中,字符数组中原来的结束标志,被字符串的第一个字符覆盖,而字符串在操作中未被修改。
9.有如下程序:
#include<iostream>
usingnamespacestd;
voidfun(inti){cout<<"
/inti"
voidfun(chare){cout<<"
/charc"
intmain(){
fun(0);
fun("
0"
retum0;
运行后的输出结果是______。
A./inti/inti
B./inti/charc
C./charc/inti
D./charc/charc
[解析]本题考查的是重载函数的匹配。
在main函数中,fun(0)中的参数是整数0,所以最佳匹配函数是fun(inti),即调用函数fun(inti),输出“/inti”;
同样,fun("
)中的参数是字符"
,最佳匹配函数是fun(charc),所以调用函数fun(charc),输出”/charc”,选项B正确;
答案为B选项。
10.设有定义charstr[80]以下不能将输人数据nrst/nsecond/<CR)读取到数组str的语句是____。
A.cin.get(str,strlen(str));
B.cin.getline(str,strlen(str));
C.cin>>str;
D.dn.read(str,strlen(str));
[解析]本题考查cin流对象的几种成员函数get,getline,read及流提取符>>的使用规则。
11.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送______来实现。
A.调用语句
B.命令
C.中令
D.消息
[解析]在面向对象方法中,对象之间通过消息进行通信。
消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。
12.有如下类定义:
classMyClass{
public:
______
private:
intdata;
};
若耍为Myclass类重载流输入运算符>>,使得程序中可以“cin>>obj;
”形式输入MyClass类的对象obj,则横线处的声明语句应为______。
A.friendistream&operator>>(istream&is,MyClass&-a);
B.friendistream&operator>>(istream&is,MyClassa);
C.istream&operator>>(istream&is,MyClass&a);
D.istrcam&operator>>(istream&is,Myclassa);
[解析]重载输入、输出的声明必须是友元.传入的对象必须是地址,否则操作对象的值是没有意义的,
下面是重载输入运算符示例:
(DewC++)
#include<cstdlib>
intdala;
MyClass(intdata);
friendistrcam&operator>>(istream&is,MyClass&obj);
MyClass:
MyClass(intdata){
data=data;
istream&operator>>(istream&is,MyClass&obj){
is>>obj.data;
returnis;
intmain(void)
MyClassobj(12);
cin>>obj;
cout<<endl;
cout<<obj.data;
system("
PAUSE"
returnEXITSUCCESS;
13.若有如下程序:
usingnarnespacestd;
classTestClass
voidwho(){cout<<"
TestClass"
<<endl;
classTestClassl:
publicTestClass
TestClass1"
}};
intmain()
TestClass*p;
TcstClass1obj1;
p=&obj1;
p->who();
return0;
则该程序运行后的输出结果是______。
A.TestClassl
B.TestClass
C.0
D.无输出
[解析]程序中的TestClassl为TestClass的派生类,主函数maln中定义TestClass对象*p,TestClass1对象obj1,然后p引用obj1,执行p->who()则是调用基类中的who函数,输出TestClass。
14.计算数列第n项的函数定义如下:
intfa(intn){
if(n==0)return0;
elseif(n==1)return1;
elsereturnfa(n-1)+fa(n-2);
若执行函数调用表达式fa(3)时,返回的函数值为______。
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.以下正确的描述为
A.每个C++语言程序必须在开头用预处理命令:
B.预处理命令必须位于C++源程序的首部
C.在C++语言中预处理命令都以“#”开头
D.C++语言的预处理命令只能实现宏定义和条件编译的功能
[解析]本题中,A和B的描述是一样的,故可以捧除。
在C++中,建议用inline函数取代C语言中的宏定义功能。
16.VisualFoxPro是一种____。
A.数据库管理系统软件
B.操作系统软件
C.文字处理软件
D.CAD软件
[解析]VisualFoxPro属于小型数据库管理系统软件,它是微软的产品,只具备数据库管理系统的一些简单功能。
17.已知类Time的定义如下:
classTime{//时间类
inthour,minute,second;
//时、分、秒
Time(inth,intm,ints):
hour(h),minute(m),second(s){}
______{
switch(index){
case0:
returnhour;
case1:
returnminute;
default:
returnsecond;
其中横线处应为下标访问运算符[]的重载函数的函数头,横线处应填入的代码是
A.int&
operator[](Time&
t,intindex)
B.int&
operator[](intindex)
C.friendint&
operator[](Time&
D.friendint&
operator[](intindex)
18.有如下程序:
classBase{
classDerived1:
publicBase{};
classDerived2:
protectedBase{};
Derived1d1;
Derived2d2;
d1.data=0;
//①
d2.data=0;
//②
下列关于程序编译结果的描述中,正确的是______。
A.①②皆无编译错误
B.①有编译错误,②无编译错误
C.①无编译错误,②有编译错误
D.①②皆有编译错误
[解析]本题考查公用继承和保护继承对基类成员的访问属性。
在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。
在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。
本题中Derived1公用继承Base,所以①编译正确,Derived2保护继承Base,所以②编译不正确。
19.对于算法的每一步,指令必须是可执行的。
算法的____要求算法在有限步骤之后能够达到预期的目的。
A.可行性
B.有穷性
C.正确性
D.确定性
20.下面有关类模板的说法中不正确的是____。
A.类模板的成员函数都是模板函数
B.类模板本身在编译中不会生成任何代码
C.类模板只是虚拟类型的参数
D.用类模板定义一个对象时,不能省略实际参数
[解析]C++中类模板的声明格式为template<模板形参表声明><类声明>,并且类模板的成员函数都是模板函数。
21.下列不属于软件工程过程的基本活动的是____。
A.软件规格说明
B.软件开发
C.软件确认
D.软件需求分析
[解析]软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。
软件工程的过程是将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。
它的基本活动包括软件规格说明、软件开发、软件确认、软件演进。
22.运算符重载是对已有的运算符赋予多重含义,因此______。
A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B.可以改变一个已有运算符的优先级和操作数个数
C.只能重载C++中已经有的运算符,不能定义新运算符
D.C++中已经有的所有运算符都可以重载
[解析]此题考查的是运算符重载。
运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。
23.数据库系统的三级模式不包括______。
A.概念模式
B.内模式
C.外模式
D.数据模式
[解析]数据库系统的三级模式是概念模式、外模式和内模式,所以选择D。
24.单个用户使用的数据视图的描述称为
A.外模式
B.概念模式
C.内模式
D.存储模式
[解析]选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;
选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;
选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;
选项D)不正确,存储模式即为内模式。
25.有如下函数模板定义:
template<classT>
Tfunc(Tx,Ty){returnx*x+y*y;
在下列对func的调用中,错误的是______。
A.func(3,5);
B.func(3.0,5.5);
C.func(3,5.5);
D.func<int>(3,5.5);
[解析]此题考查的是函数模板的使用。
引用模板函数和引用一般函数在语法形式上基本相同。
需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。
本题C选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;
A、B选项正确;
D选项中,函数名后的<int>是模板实参表,编译系统会将double型的形参“5.5”自动转化成int类型。
26.表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是____。
A.showbase()和eof()
B.showpoint()和eof()
C.showpoint()和bad()
D.showpoint()和good()
27.若有定义语句“inti=2,j=3;
”,则表达式i/j的结果是______。
A.0
B.0.7
C.0.66667
D.0.66666667
[解析]由于变量i、j都是整型变量,所以两者相除所得的商也是整型数据。
28.两个或两个以上模块之间联系的紧密程度称为______。
A.耦合性
B.内聚性
C.复杂性
D.数据传输特性
[解析]耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
29.下面程序的运行结果为
voidmain()
chara="
3"
switch(a)
case"
cout<<"
2"
:
break;
default:
1"
A.3
B.321
C.31
D.32
[解析]本题主要考查的是switch语句的使用,在第一个case处,因为满足条件所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。
30.下列关于运算符重载的叙述中,错误的是______。
A.有的运算符可以作为非成员函数重载
B.所有的运算符都可以通过重载而被赋予新的含义
C.不得为重载的运算符函数的参数设置默认值
D.有的运算符只能作为成员函数重载
[解析]重载运算符的规则如下:
①C++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载;
②c+十不能重载的运算符只有5个;
③重载不能改变运算符运算对象的个数;
④重载不能改变运算符的优先级和结合性;
⑤重载运算符的函数不能有默认的参数;
⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。
所以答案为B。
31.对于一个类定义,下列叙述中错误的是______。
A.如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B.如果没有定义缺省的构造函数,编译器一定将生成一个缺省的构造函数
C.如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
D.如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
[解析]本题考查构造函数和复制构造函数,如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数,如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数。
如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数。
32.有如下的运算符重载函数定义:
doubleoperator+(inti,intk){returndouble(i+k);
但定义有错误,对这个错误最准确的描述是______。
3.00)
A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的
B.两个int型参数的和也应该是int型,而这里将+的返回类型声明为double
C.没有将运算符重载函数声明为某个类的友元
D.C++已经提供了求两个int型数据之和的运算符+,不能再定义同样的运算符
[解析]此题考查的是运算符的重载。
C++语言规定,不能作为非成员函数重载的运算符有=、[]、()、->以及所有的类型转换运算符,故选项A错误;
运算符重载对返回值类型没有限制,故选项B错误;
C++并不强制要求非成员重载的运算符一定是某个类的友元,所以C选项错误;
题目中重载的“+”运算符的两个参数都是int类型,而C++已经提供了求两个int型数据之和的运算符+,编译器无法区分应该调用哪一个,所以应该选择D选项。
33.下列关于运算符重载的描述中,正确的是______。
A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
B.一元运算符只能作为成员函数重载
C.二元运算符重载为非成员函数时,参数表中有一个参数
D.C++中可以重载所有的运算符
运算符重载为成员函数时,形参个数一般为运算符元数减1;
重载为非成员函数时,形参个数一般和运算符元数相等。
所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误;
运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确;
一元运算符中,“-”(取负)、“++”、“--”等均可重载为成员函数;
C++语言中,“.”、“.*”、“->*”、“:
”、“?
”五个运算符不能重载。
34.有如下程序:
classToy{
Toy(char*_n){strcpy(name,_n);
count++;
~Toy(){count--;
char*GetName(){returnname;
staticintgetCount(){returncount;
charname[10];
staticintcount;
intToy:
count=0;
Toyt1("
Sn