国家二级C++机试(函数)模拟试卷6
选择题
1.下列关于函数的描述中,错误的是( )。(D)
A. 函数可以没有返回值
B. 函数可以没有参数
C. 函数可以是一个类的成员
D. 函数不能被定义为模板
解析:C++是一种强类型语言,它要求对于每一个实现都要有一个实例,这给程序员带来很多不便性。函数模板提供一种用来自动生成各种类型函数实例的算法。程序员只需要初始化其中部分参数和返回值,或者都不初始化,只需要申明通用的类型,而函数体则不需要改变。
2.下列关于C++函数的说明中,正确的是( )。(C)
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C++要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
解析:此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入retum语句,故选项B错误;如果函数只是返回值类型不同,而其它完全相同,则不能作为函数重载来使用,故选项D错误。
3.若有下面的函数调用:
fun(a+b,3,max(n—1,b))
则fun的实参个数是( )。(A)
A. 3
B. 4
C. 5
D. 6
解析:此题考查的是函数的调用。C++中函数调用的一般形式为:函数名(实参表),其中实参表是用逗号分隔的一系列表达式。因此,本题中fun0函数的实参表由a+b、3和max(n—1,b)组成。
4.有如下程序:
#inc1ude<iostream>
using namespace std;
void function2(int n);
void functionl(int n){
if(n<=0)return;
function2(n—2);
)
void function2 (int n){
if(n<=0)return;
functionl(n—1);
}
int main(){
functionl(5);
return 0;
}
下列关于程序运行情况的描述中,正确的是( )。(D)
A. function1运行1次,function2运行2次
B. function1运行2次,function2运行1次
C. function1运行2次,function2运行3次
D. function1运行2次,function2运行2次
解析:在主函数中执行functionl(5)时,会调用function2(3),function2(3)又会调用functionl(2),functionl(2)又会调用function2(0),到此相互调用结束。所以funaion1()和function2()各执行了2次。
5.假设函数fun已经定义,其原型为“void fun(int a,int b—7,char*p=\\(C)
A. fun(5)
B. fun(5,8)
C. fun(6,\\
D. fun(0,0,\\
解析:根据函数fun()的定义,其前两个形参为整型变量,第三个形参为字符型变量。所以在调用时,必须符合形参的数据类型,而选项C)的第二个实参的数据类型为字符串,不符合第二个形参的数据类型。
6.已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( )。(D)
A. FA必须定义在FB之前
B. FB必须定义在FA之前
C. 若FA定义在FB之后,则FA的原型必须出现在FB的定义之前
D. 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
解析:在C++中,在调用任何函数之前,必须确保它已有原型说明。函数原型说明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。在本题中,当函数FA调用FB时,函数FB可以定义在FA的后面,但是FB的原型必须出现在FA的定义之前,因而选项D)为正确答案。
7.在对函数进行原型声明时,下列语法成分中,不需要的是( )。(D)
A. 函数返回类型
B. 函数参数列表
C. 函数名
D. 函数体
解析:在C++中函数在使用之前要预先声明,这种声明在标准C++中称为函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类型。
8.关于函数中的<返回类型>,下列表述中错误的是( )。(D)
A. <返回类型>中有可能包含关键字int
B. <返回类型>中有可能包含自定义标识符
C. <返回类型>中有可能包含字符牛
D. <返回类型>中可能包含[]
解析:<返回类型>又称为函数类型,表示一个函数所计算(或运行)的结果值的类型.它可以是C++中已定义的数据类型,也可能是用户自定义的数据类型,但是不能包含[],因为符号[]不是一个数据类型。
9.若一个函数的原型为“int*Xfunl(int x,int&y,char z);”,则该函数的返回值类型为( )。(A)
A. int*
B. int
C. int&
D. char
解析:由“int.Xfiml(intx,int&y’char z);”的定义可知,其返回值为指向int指针的函数。
10.有如下程序:
#inc1ude<iostream>
using namespace std;
c1ass A{
public:
static int a;
void init(){a=1;}
A(int a=2){int();a++;)
};
int A::a=0;
A obj;
int main()
{
cout<<obj.a;
return 0:
j
}
运行时输出的结果是( )。(B)
A. 0
B. 1
C. 2
D. 3
解析:此题实际考查的是变量作用域的屏蔽效应。在C++中,当标识符的作用域发生重叠时,在一个函数中声明的标识符可以屏蔽函数外声明的标识符或全局标识符.声明类A的全局对象时,构造函数首先调用u}t函数,但由于静态成员变量a被构造函数内部的形参a所屏蔽所以a++改变的是形参a的值,对静态成员变量a没有影响。
11.有如下程序:
#inc1ude <iostream>
void fun(int& x,int y){int t=x;x=y;y=t; }
int main()
本文档预览:3600字符,共10296字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载