函数和编译预处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数和编译预处理(第五章)
一、单项选择题
1.关于函数,以下正确的描述是( B)
A. 函数的定义可以嵌套,但函数的调用不可以嵌套
B. 函数的定义不可以嵌套,但函数的调用可以嵌套
C. 函数的定义可以嵌套,函数的调用也可以嵌套
D. 函数的定义和函数的调用都不可以嵌套
2.关键字inline用于定义内联函数,定义时,是将该关键字( D )
A. 取代定义函数的类型标识符
B. 取代被定义的函数名
C. 加在类型标识符之后
D. 加在类型标识符之前
3.以下不正确的描述为( B )
A. 在函数之外定义的变量称为外部变量,外部变量是全局变量。
B. 在函数之内说明的外部变量是局部变量,仅在本函数中有效。
C. 在函数之外说明的静态变量也是全局变量,其作用域是文件作用域。
D. 文件作用的域范围是一个程序文件,但必须符合“定义在前,使用在后”的规则。4.以下正确的描述为( C )
A. 每个C++程序必须在开头用预处理命令#include
B. 预处理命令必须位于C++源程序的首部
C. 在C++中,预处理命令都以#开头
D. C++语言的预处理命令只能实现宏定义和条件编译的功能
5.在下面的函数原型说明中,存在着语法错误的是( D )
A.void BC(int a,int);
B.void BD(int , int);
C.void BE(int , int=5);
D.int BF(int x ; int y);
6.下列哪个不是重载函数在调用时选择的依据( C )
A. 形参类型
B. 形参个数
C. 函数返回值类型
D. 函数名
7.在一个源程序文件中有以下函数定义,其中( D )是重载函数。
A.ABC B. BCD
C. ACD
D. 全部
A) int sum(float x,int y) B) float sum(float x,int y,char z)
{...} {...}
C) float sum(float x,float y) D) int sum(int x,int y,char z)
{...}{...}
8.有一个函数原型abc(float x,float y);该函数的返回值类型为( C )
A. void
B. double
C. int
D. float
9.在程序中,函数声明语句正确位置是( D )
A. 随便任何位置
B. 不包含在另一函数中的任何位置。
C. 该函数使用前的任何位置
D. 该函数使用前的任何位置,但不包含在另一函数中
10.C++构造内联函数的思想是( A )
A. 用空间换时间
B. 用时间换空间
C. 用形参换实参
D. 用实参换形参
11.在以下存储类型中,( D )是用于定义动态类型的变量。
A. static 和auto
B. register 和extern
C. register和 static
D. auto 和register
12.下列各类变量,哪个不是局部变量( B )
A. register型变量
B. 外部static变量
C. auto型变量
D. 函数形参
13.以下关于调用函数时,形、实参结合的通用规则不正确的描述为(B )
A. 实参可以是变量,也可以是常数或者表达式。
B. 实参的个数可以多于形参,也可以少于形参。
C. 系统将为形参分配内存单元。
D. 实参必须与对应的形参类型相兼容。
14.假设有宏定义:
#define NUM 15
#define DNUM NUM+NUM
则表达式DNUM/2+NUM*2的值为( C )
A. 45
B. 67
C. 52
D. 90
15.对于一个功能不太复杂,并且要求加快执行速度,选用(A )合适。
A. 内联函数
B. 重载函数
C. 递归调用
D. 嵌套调用
16.若有以下函数调用语句:
fun((a+b,(x,y)),fun(n+k,d),(a,b));
其中实参的个数是(A )
A.3 B. 4 C. 5 D. 6
17.以下叙述下不正确的是(D )
A. 在函数中,通过return返回函数值。
B.函数中可以有多条return语句。
C.主函数main()也可以带有形参。
D.调用函数,必须在一条独立的语句中完成。
18.设有函数定义:int f1(void){return 100,200;},调用函数f1()时,(C )
A. 函数返回值为100
B. 函数返回二个值100和200
C. 函数返回值为200
D. 语句“return 100,200;”语法错,不能调用函数19.调用宏定义和语句:
#define M(a,b) a*b; //E
int x=M(3+4,5+6),y; //F
y=M(3,4); //G
则(B )
A. 编译时,E行有语法错
B. 编译时,F行有语法错
C. 编译时,G行有语法错
D. 编译时,F行和G行有语法错
20.在一个源文件中定义的全局变量的作用域为(D )
A. 本文件的全部范围
B. 本程序的全部范围
C. 本函数的全部范围
D. 从定义该变量的位置开始至本文件的结束
21.对于下面几个函数,(C )是重载函数。
void f(int x) { ... } //1
int f(int y) { ... } //2
int f(int i , int j ) { ... } //3
float k(int x ) { ... } //4