二级C++笔试372
(总分100, 做题时间90分钟)
一、选择题
1.
设有数组定义:char array[]="China";则数组array所占的空间为
A 4个字节
B 5个字节
C 6个字节
D 7个字节
分值: 2
答案:C
[解析] 本题考察在C++语言中,字符串的存放规则。即字符串存放在字符数组中,而且在字符的后面自动插入标识字符串结束的标识符'\0',因此,共6个字符,每个字符占用一个字节,故正确答案为C。
2.
如下程序的输出结果是
main( )
{int a=2,b=-1,c=2;
if(a<B)
if(b<0)c=0
else c++;
cout<<c<<endl;
}
A 0
B 1
C 2
D 3
分值: 2
答案:C
[解析] 本题考察的是if…else语句中的配对原则:与最近的配对,故当a<b为假时直接执行输出语句,即c的值是2,正确答案为C。
3.
按“先进后出”原则组织数据的结构是
A 有序表
B 栈
C 队列
D 二叉树
分值: 2
答案:B
[解析] 栈是按“先进后出”原则组织数据的结构;队列是按“先进先出”原则组织数据的结构;而有序表与二叉树均不是。
4.
下列语句中,输出与众不同的是
A cout<<"1."<<setfill('')<<"Hello!"<<endl;
B cout<<"1."<<''<<"Hello! \n";
C cout<<"1. Hello!"<<endl;
D cofit<<"1."<<setw(7)<<"Hello!";
分值: 2
答案:A
[解析] 本题主要考察setfill的用法。只用在设置了宽度的情况下,字符填充操作setfill才有意义。另外要注意的是设置宽度setw是所有格式中唯一一个一次有效的设置。
5.
有以下程序
main( )
{ int i=0,s=0;
do{
if (i%2){i++;continue;}
i++;
s+=i;
}while(i<7);
cout<<s<<endl;
}
执行后输出结果是
A 16
B 12
C 28
D 21
分值: 2
答案:A
[解析] 本题考察continue语句在while循环中的使用:直接跳转到条件判断表达式位置,不再执行continue后面的语句。另外,根据分析可知,本题循环体的功能是将0,2,4,6位元素加一后累加,故结果应是1+3+5+7,因此正确答案为A。
6.
阅读以下程序
#include<fstream.h>
void main( )
{
ifstream infile;
ofstream outfile;
fstream iofile;
iofile.open("a.txt",ios::in);
iofile.close( );
iofile.open("b.txt",ios::out);
}
下列描述错误的是
A 对象infile只能用于文件输入操作
B 对象outfile只能用于文件输出操作
C 对象iofile在文件关闭后,不能再打开另一个文件
D 对象iofile可以打开一个文件同时进行输入和输出
分值: 2
答案:C
[解析] 本题看似复杂,其实掌握技巧的话可以很容易的得出正确答案为C。按照常识,一个文件关闭后,应该可以再打开另外一个文件。
7.
已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是
A 字符A
B 字符a
C 字符e
D 非法的常量
分值: 2
答案:A
[解析] 首先将八进制数转换成十进制数,则发现是65,故答案为A。
8.
以下选项中合法的用户标识符是
A long
B _2 Test
C 3 Dmax
D dat
分值: 2
答案:B
[解析] 注意A选项用了C++的保留字long,选项C使用了数字开头,选项D中存在空格,这些均是错误的标识。正确答案应为B。
9.
关于类和对象描述错误的是
A 对象(Objec是现实世界中的客观事物,对象具有确定的属性
B 类是具有相同属性和行为的一组对象的集合
C 对象是类的抽象,类是对象的实例
D 类是对象的抽象,对象是类的实例
分值: 2
答案:C
[解析] C++中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。
10.
有关构造函数的说法中错误的是
A 构造函数名字和类的名字一样
B 构造函数在对象被创建时由系统自动调用
C 构造函数无任何函数类型
D 构造函数有且只有一个
分值: 2
答案:D
[解析] 本题考察构造函数的定义和使用。构造函数可以重载,故不可能只有一个。
11.
析构方法下列叙述中正确的是
A 全局变量的作用域一定比局部变量的作用域范围大
B 静态类别变量的生存期贯穿于整个程序的运行期间
C 函数的形参都属于全局变量
D 未在定义语句中赋初值的auto变量和static变量的初值都是随机值
分值: 2
答案:B
[解析] 本题考察的是变量的作用域及其生存期。一个全局变量的生存周期从它被声明开始,直到程序结束;一个局部变量的生存期从它被声明开始,直到包含它的最近的一个程序块结束。静态变量的生存期将延续到整个程序的终止。
12.
有以下程序
main( )
{ int a[][3]={{1,2,3},{4,5,0)},(*pa)[3],i;
pa=a;
for(i=0;i<3;i++)
if(i<2)pa[1][i]=pa[1][i]-1;
else pa[1][i]=1;
cout<<a[1][1]+a[1][1]+a[1][2]<<endl;
}
执行后输出结果是
A 7
B 6
C 8
D 无确定值
分值: 2
答案:A
[解析] 本题考察对二维数组的使用。按照要求分析各个数组元素的位置,即可以正确的得到答案为A。
13.
若执行下面的程序时,从键盘上输入3和4,则输出结果是
main( )
{
int a,b,s;
cin>>a>>b;
s=a;
if(a<B)s=b;
s=s*s;
cout<<s<<endl;
}
A 14
B 16
C 18
D 20
分值: 2
答案:B
14.
下列叙述中正确的是
A 实体集之间一对一的联系实际上就是一一对应的关系
B 关系模型只能处理实体集之间一对一的联系
C 关系模型属于格式化模型
D 以上三种说法都不对
分值: 2
答案:D
[解析] 实体集之间一对一的联系不一定是一一对应的关系。例如,在一个教室中,实体集“学生”与实体集“座位”之间是一对一的联系。因为实体集“学生”中的每一个学生最多与实体集“座位”中的一个座位有联系(学生坐在该座位上);并且,实体集“座位”中的每一个座位也最多与实体集“学生”中的一个学生有联系(座位上坐着该学生)。但该教室中的学生与座位之间不一定是一一对应的关系,因为有可能某些座位是空的,没有学生去坐。因此,选项A中的说法是错误的。
在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系。
因此,选项B中的说法也是错误的。
关系模型是与格式化模型完全不同的数据模型,它与层次模型、网状模型相比有着本质的区别。关系模型是用表格数据来表示实体本身及其相互之间的联系,它是建立在数学理论基础上的。因此,选项C中的说法也是错误的。
15.
在最坏情况下,下列各排序方法的比较次数正确的是
A 冒泡排序为n/2
B 冒泡排序为n(n+1)/2
C 快速排序为n/2
D 快速排序为n(n-1)/2
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论