国家二级(C++)机试模拟试卷286
选择题
1.以下程序的输出结果是( )。
#include
main()
{int b[3][3]={0,1,2,0,1,2,0,1,2),i,j,t=,1;
for(i=0;i<3;i++)
for([i=i;<=i;j++)
t=c+1b[i][b[j][j]];
cout<<t;
}(C)
A. 2
B. 3
C. 4
D. 5
解析:程序中通过for二重循环依次取二维数组中的数值进行与t的累加。取数组中的元素为i行和符合循环条件的b[i][j]列的数据。循环为0,1,2行,对应0,1,2列。即0,1,2。所以1+0+1+24。
2.类模板只可用( )型参数。(A)
A. 类
B. 重载
C. 任何
D. 派生
解析:本题考查的是类模板的定义,C++语言中模板分为两种:类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。
3.下列对模板的声明中,正确的是( )。(C)
A. template
B. template
C. template
D. template
解析:声明一个函数模板的格式为:template函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。
4.关于函数重载,下列叙述中错误的是( )。(C)
A. 重载函数的函数名必须相同
B. 重载函数必须在参数个数或类型上有所不同
C. 重载函数的返回值类型必须相同
D. 重载函数的函数体可以有所不同
解析:所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。但函数的返回类型不能作为判断重载的依据。
5.有如下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是( )。(B)
A. *p+9
B. *(p+8)
C. *p+=9
D. p+8
解析:本题考查指向数组的指针,本题中指针变量p指向数组a,那么*p的值就是1,即表示数组的第一个元素,那么数值为9的表达式就是将指针向后移动8个地址,即p+8指向的是数组元素值为9,所以数值为9的表达式是*(p+8)。
6.使用地址作为实参传给形参,下列说法正确的是( )。(D )
A. 实参是形参的备份
B. 实参与形参无联系
C. 形参是实参的备份
D. 参与形参是同一对象
解析:地址作为实参,表示实参与形参代表同一个对象。如果实参是数值,形参也是普通变量,此时形参是实参的备份。
7.在数据库技术中,实体集之间的联系可以是一对一或一对多的,那么“学生”和“可选课程”的联系为( )。(B)
A. 一对一
B. 多对多
C. 一对多
D. 无联系
解析:一名学生可以选择多门课程,一门课程也可以由多名学生选择,因此是多对多的联系。
8.有如下程序段:
int i=0,j=1;
nt &r=i;//①
r=j;//② ’
int *p=&i;//③
*p=&r;//④
其中会产生编译错误的语句是( )。(A)
A. ④
B. ③
C. ②
D. ①
解析:本题考查指针和引用。①为引用,使用正确;④中&r表示一个地址,而*p已经是一个值了,不能将一个指针赋值给一个值,所以编译错误。
9.运算符重载时不需要保持的性质是( )。(B)
A. 操作数个数
B. 操作数类型
C. 优先级
D. 结合性
解析:重载运算符的规则如下:①C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载;②C++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是C++的标准类型。所以答案为B。
10.有如下程序:
#include
using namespace std;
class MyClass {
public:
MyClass() { ++count; }
~MyClass() { –count; }
static int getCount() { return count; }
private:
static int count;
};
int MyClass::count=0;
int main()
{
MyClass obj;
cout<<obj.getCount();
MyClass *ptr=new MyClass;
cout<<MyClass::getCount();
delete ptr;
cout<<MyClass::getCount();
return 0;
}
执行这个程序的输出结果是( )。(A)
A. 121
B. 232
C. 221
D. 122
解析:本题考查静态数据成员。静态数据成员在内存中只占一份空间,静态数据成员属于类,即使不定义对象,也会给静态数据成员分配空间,可以被引用。本题中先是定义了一个对象obj,执行构造函数使得静态数据成员count变为了1,然后又定义了指针对象,执行构造函数后,count变为了2,释放指针后,执行析构函数,使得count变为了1。所以本题答案为A。
11.有如下程序:
#include<iostream>
using namespace std;
class Publication{//出版物类
char name[30];
public:
Publication(char*name=\\(D)
A. 未知类型:未知名称
B. 未知类型:精彩人生
C. 书:未知名称
D. 书:精彩人生
解析:因为getl\\
12.已知枚举类型声明语句为:
enum COLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是( )。(D)
A. 枚举常量YELLOW的值为1
B. 枚举常量RED的值为6
C. 枚举常量BLACK的值为10
D. 枚举常量WHITE的值为1
解析:C++语言规定枚举常量的默认值依次等于0,1,…,
本文档预览:3600字符,共16098字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载