二级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小时内删除。