1、国家计算机二级(C+)78 及答案解析(总分:460.00,做题时间:120 分钟)一、选择题(每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.决定 C+语言中函数的返回值类型的是( )。(分数:2.00)A.return 语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型2.设有以下语句 int a=1,b=2,c; c=a(bfun( );16.不能重载的运算符是( )。(分数:2.00)A.newB.sizeofC.*D.+17.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于(分数
2、:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段18.有如下程序 #includeiostreamh void main( ) float x=20,y; if(x00)y=00; else if(x100)y=10/x; else y=10; cout y; 该程序的输出结果是( )。 (分数:2.00)A.0B.0.25C.0.5D.1.019.有如下类定义: class MyBase int k; public; MyBase(int n=0):k(n) int value()constreturn k; ; class MyDerived; MyBase i
3、nt j; public; MyDerived(int i): j(i) int getK()const return k; int gutj()constreturn j; ; 编译时发现有一处语法错误,对这个错误最佳准确的描述是(分数:2.00)A.函数 getK 试图访问基类的私有成员变量 KB.在类 MyDerived 的定义中,基类名 MyBase 前缺少关键字 public、protected 或 privateC.类 MyDerived 缺少一个无参的构造函数D.类 MyDerived 的构造的数没有对基数数据成员 K 进行初始化20.下面程序应能对两个整型变量的值进行交换。以下
4、正确的说法是( )。 #includeiostreamh void swap(int p,int q) int t; t=p; p=q; q=t; void main( ) int a=10,b=20; couta“ “b; swap( static int number; public: point()number+;) Point()number-;) ; int Point;number=0; void main() Point *ptr; Point A,B; Point *ptr_point=new Point3; ptr=ptr_point Point C; cout=y Then
5、 z=x:z=yB.If x=y Then z=x Else z=yC.z=y:If x=y Then z=xD.If xb)|c) cout“true“endl; else cout“false“endl; (分数:30.00)填空项 1:_43.以下程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b
6、、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_44.程序 #include“ iostreamh“ void main1 int i=10; jnt j=5; cout j+i+ end1; 的结果为 2 (分数:30.00)填空项 1:_45.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是 1。(分数:30.00)填空项 1:_46.如果要把返回值为 void 的函数 A 声明为类 B 的友元函数,则应在类 B 的定义中加入的语句是 1。(分数:30.00)填空项 1:_47.以下
7、函数 rotate 的功能是:将 a 所指 N 行 N 列的二维数组中的最后一行放到 b 所指二维数组的第 0 列中,把 a 所指二维数组中的第 0 行放到 b 所指二维数组的 最后一列中,b 所指二维数组中的其他数据不变。 # define N 4 void rotate(int aN,int bN) int i,j; for(i=0;i1 ; 2 =aN-1i; (分数:30.00)填空项 1:_48.C+语言支持的两种多态性分别是编译时的多态性和 1 的多态性。(分数:30.00)填空项 1:_国家计算机二级(C+)78 答案解析(总分:460.00,做题时间:120 分钟)一、选择题(
8、每小题 2 分,共 70 分) 下列各(总题数:35,分数:70.00)1.决定 C+语言中函数的返回值类型的是( )。(分数:2.00)A.return 语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型 解析:C+语言中,在定义该函数时所指定的数据类型决定函数的返回值类型。2.设有以下语句 int a=1,b=2,c; c=a(bfun( );解析:如果在于类中要访问父类的函数应用“:”运算符。16.不能重载的运算符是( )。(分数:2.00)A.newB.sizeofC.* D.+解析:C+语言规定* 运算符是不能被重载
9、的。17.在数据库设计中,将 E-R 图转换成关系数据模型的过程属于(分数:2.00)A.需求分析阶段B.概念设计阶段C.逻辑设计阶段 D.物理设计阶段解析:数据库的逻辑设计分为:将概念模型转换成一般的数据模型;将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把 E-R 图转换成一组关系模式。18.有如下程序 #includeiostreamh void main( ) float x=20,y; if(x00)y=00; else if(x100)y=10/x; else y=10; cout y; 该程序的输出结果是( )。 (分数:2.00)A
10、.0B.0.25C.0.5 D.1.0解析:本题考查 if 语句的使用方法。该表达式的语句是 if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 由 if 表达式可知,题中直接执行 if 语句的第 2 条 else if(x100)y=1O/x;。 19.有如下类定义: class MyBase int k; public; MyBase(int n=0):k(n) int value()constreturn k; ; class MyDerived; MyBase int j; public; MyDerived
11、(int i): j(i) int getK()const return k; int gutj()constreturn j; ; 编译时发现有一处语法错误,对这个错误最佳准确的描述是(分数:2.00)A.函数 getK 试图访问基类的私有成员变量 KB.在类 MyDerived 的定义中,基类名 MyBase 前缺少关键字 public、protected 或 privateC.类 MyDerived 缺少一个无参的构造函数D.类 MyDerived 的构造的数没有对基数数据成员 K 进行初始化解析:20.下面程序应能对两个整型变量的值进行交换。以下正确的说法是( )。 #includei
12、ostreamh void swap(int p,int q) int t; t=p; p=q; q=t; void main( ) int a=10,b=20; couta“ “b; swap( static int number; public: point()number+;) Point()number-;) ; int Point;number=0; void main() Point *ptr; Point A,B; Point *ptr_point=new Point3; ptr=ptr_point Point C; cout=y Then z=x:z=y B.If x=y Th
13、en z=x Else z=yC.z=y:If x=y Then z=xD.If xfloat-double。34.下面程序段的运行结果是( )。 #includeiostreamh void main( ) char*s=“abcde“; S+=2; cout char ch=A; scanf(“%d“, if(nb)|c) cout“true“endl; else cout“false“endl; (分数:30.00)填空项 1:_ (正确答案:True)解析:本题考查的是对于逻辑运算符号的理解,“|”运算符的任何一边取值为真, 则整个运算结果为真。 43.以下程序用于判断 a、b、c 能
14、否构成三角形,若能,输出 YES,否则输出 NO。当给 a、b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三 个条件:a+bc,a+cb,b+ca。请填空。 main1 float a,b,c; scanf(“%f%f%f“, if(= 2)printf(“YES/n“); /*a、b、c 能构成三角形*/ else printf(“NO/n“); /*a、b、c 不能构成三角形*/ (分数:30.00)填空项 1:_ (正确答案:(a+bc) for(i=0;i1 ; 2 =aN-1i; (分数:30.00)填空项 1:_ (正确答案:a0i , bi0)解析
15、:根据题意,语句“biN-1= -|_|-;”的作用是把 a 所指二维数组中的第 0 行放到 b 所指二维数组的 最后一列中,在 a 数组中,第 0 行用 a0来表示,所以第 19 空填 a0i;语句“ -|_|- =aN-1i;”的作用 是将 a 所指二维数组中的最后一行放到 b 所指二维数组的第 0 列中,b 数组中第 0 列用 b0来表示,所以,第 20 空填 bi0。48.C+语言支持的两种多态性分别是编译时的多态性和 1 的多态性。(分数:30.00)填空项 1:_ (正确答案:运行时)解析:本题考查的是多态的概念,多态性主要是指发出同样的消息而被不同类型的 对象接收时导致完全不同的行为,它一般分为编译时的多态性和运行时的多态性,比如 函数重载和虚函数。