计算机二级模拟考题Word文档下载推荐.docx
《计算机二级模拟考题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机二级模拟考题Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
D)结构特性设计和行为特性设计
(10)实体是信息世界中广泛使用的一个术语,它用于表示
A)有生命的事物
B)无生命的事物
C)实际存在的事物
D)一切事物
(11)以下都是C++语言标识符的是
A)dsfa,df4,f$
B)huhj,a^,k2
C)3k,h,j_9
D)_ok,jk,k8
(12)C++语言中用于定义类的关键字是
A)class
B)struct
C)default
D)sizeof
(13)设以下变量均为int类型,则值不等于7的表达式是
A)(x=y=6,x+y,x+1)
B)(x=y=6,x+y,y+1)
C)(x=6,x+1,y=6,x+y)
D)(y=6,y+1,x=y,x+1)
(14)以下程序的输出结果是
#include
voidmain()
{inta=21,b=11;
cout<
<
--a+b;
}
A)30
B)31
C)32
D)33
(15)while和do-while循环的主要区别是
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内
D)do-while的循环体不能是复合语句
(16)与y=(x>
0?
1:
x<
-1:
0);
的功能相同的if语句是
A)if(x>
0)y=1;
elseif(x<
0)y=-1;
elsey=0;
B)if(x)
if(x>
C)y=-1;
if(x)
elseif(x==0)y=0;
elsey=-1;
D)y=0;
=0)
(17)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
(18)下面程序段的运行结果是
{char*s="
abcde"
;
s+=2;
&
s;
A)cde
B)字符′c′
C)字符′c′的地址
D)无确定的输出结果
(19)下面叙述不正确的是
A)派生类一般都用公有派生
B)对基类成员的访问必须是无两义性的
C)赋值兼容规则也适用于多重继承的组合
D)基类的公有成员在派生类中仍然是公有的
(20)下面程序应能对两个整型变量的值进行交换。
以下正确的说法是
voidswap(intp,intq)
{intt;
t=p;
p=q;
q=t;
{inta=10,b=20;
a<
"
<
b;
swap(&
a,&
b);
A)该程序完全正确
B)该程序有错,只要将语句swap(&
中的参数改为a,b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D)以上说法都不对
(21)关于友元的概念错误的是
A)友元函数没有this指针
B)调用友元函数时必须在它的实参中给出要访问的对象
C)一个类的成员函数也可以作为另一个类的友元函数
D)只能在类的公有段声明友元
(22)关于抽象类下面说法正确的是
A)抽象类就是其中有函数定义但没有实现的类
B)抽象类是可以被实例化的
C)派生类不能成为抽象类
D)抽象类的子类必须实现父类中的纯虚函数
(23)下面程序的结果是
classtest{private:
intnum;
public:
test();
intgetint(){returnnum;
~test();
};
test:
:
test()
{num=0;
test:
~test()
{cout<
"
Destructorisactive"
{testx[3];
cout<
Exitingmain"
A)Exitingmain
Destructorisactive
B)Exitingmain
C)Exitingmain
D)Exitingmain
(24)如果表达式--x+y中,--是作为成员函数重载的,+是作为成员函数重载的,则该表达式还可为
A)y.operator+(x.operator--(0))
B)y.operator+(x.operator--())
C)y.operator+(operator--(x,0))
D)operator+(x.operator--())
(25)下列语句不能够用于打开C根目录下文件test.txt的语句是
A)ifstreamfin;
fin.open("
C:
\\test.txt"
);
B)ifstreamfin("
C)A)和B)
D)ifstreamfin;
fin("
(26)以下哪个基类中的成员函数表示纯虚函数?
A)virtualvoidvf(int)
B)voidvf(int)=0
C)virtualvoidvf(=0)
D)virtualvoidyf(int){}
(27)下面程序输出的结果是
{inti;
inta[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;
i<
3;
i++)
a[i][i]<
A)159
B)753
C)357
D)591
(28)派生类继承基类的方式有
A)public
B)private
C)protected
D)以上都对
(29)下列程序的运行结果为
classLocation{
protected:
intX,Y;
voidSetX(intmyx){X=myx;
voidSetY(intmyy){Y=myy;
voidshowxy(){cout<
X="
X<
Y="
Y<
classRectangle:
publicLocation{
private:
intH,W;
voidSetH(intmyh){H=myh;
voidSetW(intmyw){W=myw;
voidshow(){cout<
H="
H<
W="
W<
endl;
}};
{Rectangler1;
r1.SetX(3);
r1.SetY(5);
r1.SetH(4);
r1.SetW(6);
r1.showxy();
r1.show();
A)X=3Y=5
X=3Y=5H=4W=6
B)X=3Y=5
X=3Y=5H=3W=6
C)X=3Y=5
X=3Y=4H=4W=6
D)X=3Y=5
X=3Y=3H=4W=6
(30)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-′a′+′A′;
s++;
}}
{charstr1[100]="
abcddfefdbd"
c=′d′;
ss(str1,c);
cout<
str1;
程序运行后的输出结果是
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd
(31)有以下程序
{inta=5,b=0,c=0;
if(a=b+c)cout<
***"
elsecout<
$$$"
下列选项叙述正确的是
A)有语法错不能通过编译
B)可以通过编译但不能通过连接
C)输出***
D)输出$$$
(32)已知各变量的定义如下
inti=8,k,a,b;
unsignedlongw=5;
doublex=1.42,y=5.2;
则以下符合C++语言语法的表达式是
A)a+=a-=(b=4)*(a=3)
B)a=a*3+2
C)x%(-3)
D)y=floati
(33)以下程序中循环体总的执行次数是
inti,j;
for(i=6;
i>
1;
i--)
for(j=0;
j {……}
A)20
B)261
C)15
D)25
(34)对于下面的程序,说法正确的是
{intx=3,y=4,z=2;
if(x=y+z)cout<
x=y+z"
x!
=y+z"
A)不能通过编译
B)输出6
C)输出x!
=y+z
D)输出x=y+z
(35)下列程序的输出结果是
{inta[3],i,j,k=2;
i++)a[i]=i;
i for(j=0;
j a[j]=a[i];
a[2];
A)2
B)3
C)1
D)0
二、填空题
请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。
(1)常用的黑箱测试有等价分类法、1、因果图法和错误推测法4种。
(2)测试的目的是暴露错误,评价程序的可靠性;
而2的目的是发现错误的位置并改正错误。
(3)软件维护活动包括以下几类:
改正性维护、适应性维护、3维护和预防性维护。
(4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为4。
(5)关键字ASC和DESC分别表示5的含义。
(6)C++语言中表示双精度浮点数的关键字是6。
(7)执行下列语句后,c3中的值为7
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
(8)若从键盘输入70,则以下程序输出的结果是8。
{inta;
cin>
>
a;
if(a>
50)cout<
40)cout<
30)cout<
(9)以下程序的输出结果是9。
{chars[]="
abcdef"
s[3]=′\0′;
s<
(10)以下程序运行后的输出结果是10。
voidfun(intx,inty)
{x=x+y;
y=x-y;
x=x-y;
x<
"
y<
}
{intx=2,y=3;
fun(x,y);
(11)常数据成员和静态数据成员在使用前共同的要求是要进行11。
(12)在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是12。
(13)表达式x.operator+(y.operator++(0))还可以写成13。
(14)要采用"
cin,cout"
进行输入输出时,必须包含的头文件是14。
(15)构造函数是和15同名的函数。
参考答案及分析
一、选择题
(1)B
解析:
循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能访问到整个链表。
(2)B
栈操作原则上"
后进先出"
,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。
所以出栈时一定是先出D,再出C,最后出A。
(3)C
在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。
(4)C
结构化程序设计方法设计出的程序具有明显的优点。
其一,程序易于理解、使用和维护;
其二,提交了编程工作的效率,降低了软件开发成本。
其中,人们更重视前者。
(5)C
模块的独立程序是评价设计好坏的重要度量标准。
衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
(6)A
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
它可以分为软件定义、软件开发及软件运行维护3个阶段。
(7)A
软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
(8)A
在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。
而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。
(9)A
数据库设计包括数据库概念设计和数据库逻辑设计两个方面的设计内容。
(10)C
实体是客观存在且可以相互区别的事物。
实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。
因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。
(11)D
C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。
(12)A
C++中类定义的关键字是class。
class不能大写。
(13)C
C++语言中逗号"
,"
也是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。
其一般形式为:
表达式1,表达式2,其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
逗号表达式的一般形式可以扩展为:
表达式1,表达式2,表达式3,…,表达式n,它的值为表达式n的值。
(14)B
自减运算符位于变量之前时,先使变量的值减1,再进行运算。
(15)A
while是先判断条件再执行语句;
do-while则是先执行一次语句再判断条件,从而决定是否继续再执行循环体中的语句,这正是二者主要区别。
(16)A
条件运算符要求有三个操作对象,它是C++语言中惟一的一个三目运算符。
条件表达式的一般形式为:
表达式1?
表达式2:
表达式3,先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
本题中用了两次三目运算符。
(17)A
a[i][j]元素之前有i行元素(每行有m个元素),在a[i][j]的前面还有j个元素,因此a[i][j]之前共有i*m+j个元素。
(18)C
对于字符串指针,其保留的是整个串的首地址,即为第一个字符的起始地址,当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。
(19)D
C++语言中如果基类的成员是公有的,它被继承后在子类中该成员可能是公有的,也可能不是,主要看继承的权限。
(20)D
本题应该把swap()函数改成这样:
swap(int*p,int*q){intt;
t=*p;
*p=*q;
*q=t;
}执行程序时,先将a的地址传递给指针变量p,b的地址传递给指针变量q,然后将*p(a的值)的值传递给t,将*q(b的值)传递给*p,将t的值传递给*q,从而将a值和b值互换。
(21)D
C++中的友元可以在一个类中的任何位置声明,不一定必须在公有段,友元没有自己的this指针,调用友元函数时必须在它的实参中给出要访问的对象,并且一个类的成员函数是可以作为另一个类的友元函数的。
(22)D
C++语言中的抽象类就是类中至少有一个纯虚函数的类,抽象类不能被实例化,继承抽象类的类必须实现抽象类中的纯虚函数。
(23)A
C++语言中析构函数是在程序退出不用该类的对象时进行调用。
(24)B
C++语言中用成员函数重载--x为:
x.operator--(),用成员函数重载x+y为:
x.operator+(y)。
(25)D
C++语言中打开文件有两种方式①ifstreamfin("
test.dat"
)②ifstreamfin;
fin.open("
。
(26)B
C++中纯虚函数的定义与虚函数的关键字一样,在函数末尾要加上"
=0"
(27)A
首先,当i=0时,数组中的位置是a[0][0]=1,当然,如果用排除法的话,就不用考虑后面的循环了,因为在4个选项中,第1个数为1的选项只有A)。
本题执行第2次循环时,i的值为1,则cout函数中的数组指向为a[1][1]=5,依次循环,可求出答案。
(28)D
派生类继承基类的方式有3种:
public,private和protected,常用的是public.
(29)A
本题是一道简单的成员函数应用题,考生只要按着主函数中生成的类Rectangle的对象r1进行成员函数的调用即可得到答案。
(30)B
在内存中,字符数据以ASCII码存储,它的存储形式就与整数的存储形式相类似。
C++语言使字符型数据和整型数据之间可以通用。
也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。
(31)D
解答本题时,先判断if语句,因为a=b+c为零,则执行else语句。
(32)A
选项B)中a在运算前未赋初值,在C++语言里变量在运算前必须赋初值;
选项C)中的模运算符"
%"
两侧均应为整型数据;
选项D)应改为y=(float)i。
(33)A
本题中第1个for循环执行5次后结束,第2个for循环执行5次。
第2个for循环中第1次执行了6次,第2次执行了5次,第3次执行了4次,第4次执行了3次,第5次执行了2次,共20次。
(34)D
解答本题关键是要理解if后面的括号里的是赋值语句而并非关系判断,赋完值后x不等于零,C++语言里非零都作真处理,所以输出结果为"
,故答案为选项D),注意"
="
与"
=="
的区别。
(35)A
本题里有三个for循环,但要分清楚,第一个是单独的给三个元素赋值,赋完值后三个a[0]=0,a[1]=1,a[2]=2;
后面的两个for是嵌套循环,对数组元素的赋值,但由于k=2,初值已定for里的条件是小于k,所以不管怎么处理都影响不到a[2],故答案为2。