国家二级C++机试(函数)模拟试卷5
选择题
1.下列关于函数的描述中,错误的是( )。(D)
A. 函数可以没有返回值
B. 函数可以没有参数
C. 函数可以是一个类的成员
D. 函数不能被定义为模板
解析:C++是一种强类型语言,它要求对于每一个实现都要有一个实例,这给程序员带来很多不便性。函数模板提供一种用来自动生成各种类型函数实例的算法,程序员只需要初始化其中部分参数和返回值,或者都不初始化,只需要申明通用的类型,而函数体则不需要改变。
2.下列关于C++函数的说明中,正确的是( )。(C)
A. 内联函数就是定义在另一个函数体内部的函数
B. 函数体的最后一条语句必须是return语句
C. 标准C*要求在调用一个函数之前,必须先声明其原型
D. 编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
解析:此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项A错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入return语句,故选项B错误;如果函数只是返回值类型不同,而其它完全相同,则不能作为函数重载来使用,故选项D错误。
3.若有下面的函数调用:
fun(a+b,3,max(n-1,b))
则fun的实参个数是( )。(A)
A. 3
B. 4
C. 5
D. 6
解析:此蹶考查的是函数的调用,C++中函数调用的一般形式为:函数名(实参表),其中实参表是用逗号分隔的一系列表达式。因此,本题中fun()函数的实参表由a+b、3和max(n-1,b)组成。
4.有如下程序:
#include<iostream>
using namcspace 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(){
function1(5);
return 0;
}
下列关于程序运行情况的描述中,正确的是( )。(D)
A. function1运行1次,function2运行2次
B. function1运行2次,function2运行1次
C. function1运行2次,function2运行3次
D. function1运行2次,function2运行2次
解析:在主函数中执行function1(5)时,会调用function2(3),function2(3)又会调用function1(2),function1(2)又会调用function2(0),到此相互调用结束。所以function1()和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.下列函数原型声明中,错误的是( )。(C)
A. int function(int m,int n);
B. int function(int,int);
C. int function(int m=3,int n);
D. int function(int&m,int&n);
解析:在C++中,函数在使用之前要预先声明。这种声明在标准C++中称为函数原型,函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数个数和类型。其语法为:<返回类型><函数名>(<形参列表>);使用函数原型说明有两种形式:①直接使用函数定义的头部,并在后面加上一个分号;②在函数原型说明中省略参数列表中的形参变量名,仅给出函数名、函数类型、参数个数及次序。在选项C中,给出了形参变量m的初值。
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*Xfunl(int x,int&y,char z);”的定义可知,其返回值为指向int指针的函数。
10.有如下程序:
#include<iostream>
void fun(int&x,int y){int t=x;x=yw=t;}
int main()
{
int a[2]={23,42};
fun(a[1],a[0]);
std::cout<<a[0]<<’’,’’<<a[1]<<std::end1;
return 0;
}
执行后的输出结果是( )。(B)
A. 42,42
B. 23,23
C. 23,42
D. 42,23
解析:此题考查是是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的:第二个参数是按值传递,是单向的。
11.有如下程序:
#include<iostream>
using namespace std;
int main()
{
本文档预览:3600字符,共10125字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载