C++常见选择填空习题集

int sum=0;

for (int i=3; i<=100; i++) { int temp=int(sqrt(i));

for (int j=2; j<=temp; j++) if (i%j) [2] break;

if ([3] j>temp) sum+=i; }

cout<

2. 展转相除法求两个整数a和b的最小公倍数。 #include using namespace std; void main() { int a=10,b=15; int temp,i=1;

if ( [1]a

3.下列程序计算1000以内能被3整除的自然数之和,请完成程序。

#include void main() {

int x=1, sum; [1]sum=0; while(1) {

if( [2]x>1000 )break; if( [3]x%3==0 )sum+=x; x++; }

cout<

第四章函数与预处理

一、选择题

1. 若要定义一个只允许本源文件中所有函数能使用的全局变量,则该变量需要使用的存储类别是( )

A. extern B. register C. auto D. static

2. 函数的重载是指( )

A. 两个或两个以上的函数有相同的函数名,但函数形参的个数或类型不同 B. 两个以上的函数有相同的函数名和相同个数的参数,但形参的类型可以不同 C. 两个以上的函数有不同的函数名,但形参的个数或类型相同 D. 两个以上的函数有相同的函数名,并且函数的返回类型不同

3. 关于函数的描述中,正确的是( )

A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套

C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 4. 若有宏定义: #define S(x) (x)*(x) ,则表达式:2.7/S(3.0)在预编译过程中将( ) A. 被替换为2.7/3.0*3.0 B. 被替换为2.7/(3.0)*(3.0) C. 被替换为2.7/((3.0)*(3.0)) D. 不能被替换

5. 关于内置函数的说法中,不正确的是( )

A. 内置函数不需要使用堆栈进行现场的保护与恢复 B. 内置函数以牺牲程序的存储空间换取程序的执行时间 C. 内置函数体内不能有循环语句

D. 类的内置函数必须在类体外通过加关键字inline定义

6. 在函数定义前加上inline表示该函数被定义为( )

A. 重载函数 B. 内置函数 C. 成员函数 D. 普通函数

7. 关于设置C++函数参数默认值的描述中,正确的是( ) A. 不允许设置函数参数的默认值

B. 只能在定义函数时设置函数参数的默认值

C. 设置函数参数默认值时,应该是先设置右边的再设置左边的 D. 设置函数参数默认值时,应该全部参数都设置

8. 若同时定义了下列四个选项格式的函数和模板,fun(8,3.1)调用的是( ) A. template

9. 关于函数模板的叙述中,正确的是( )

A. 函数模板实际上是函数类型和形参类型不具体指定的通用函数 B. 函数模板可以用于描述函数体不同的一系列函数 C. 函数模板可以用于描述参数个数不同的一系列函数 D. 函数模板定义中typename和class的作用不同

10. 关于变量的存储类别的描述中,不正确的是( )

A. 变量的存储类别指的是变量值在内存中存储的方法 B. 变量的存储类别与变量值存在的时间有关

C. 变量的存储类别决定了变量占用内存的分配与释放时间 D. 变量的存储类别不能确定变量的作用域

11已知函数func的原型是:double func(double*pd,int &ri); 变量x和y的定义是:double x; int y;

把x和y分别作为第一参数和第二参数来调用func,正确的调用语句是( )

A. func(x,&y); B. func(&x,y); C. func(&x,&y); D. func(x,y);

12. 关于递归函数的说法中,不正确的是( )

A. 递归函数可以改写为非递归函数 B. 递归函数应有递归结束的条件 C. 解决同一个问题的递归函数的效率比非递归函数的效率要高 D. 递归函数往往更符合人们的思路,程序更容易理解 13. 下列叙述中,正确的是( )

A. 预处理命令行必须位于源文件的开头 B. 在源文件的一行上可以有多条预处理命令 C. 宏名必须用大写字母表示 D. 宏替换不占用程序的运行时间

14. 关于函数模板的说法中,正确的是( )

A. 函数模板中typename和class用于定义不同的虚拟类型名 B. 能被函数模板代替的函数必须具有相同个数的形参 C. 函数模板的虚拟类型名由C++系统自动确定

D. 函数模板的虚拟类型名是在运行阶段确定实际类型的

15. 关于函数的说法中,错误的是( )

A. 函数定义是平行的 B. 函数可以嵌套调用 C. 函数可以嵌套定义 D. 函数可以递归调用

16. 定义一个函数模板要用到的第一个修饰符是( )

A. typename B. template C. class D. typedef

17. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( ) A. 内置函数 B. 重载函数 C. 递归函数 D. 函数模板

18. 不是重载函数调用时选择依据的是( )

A. 参数个数 B. 参数类型 C. 函数名字 D. 函数类型

19. 关于局部变量的说法中,不正确的是( )

A. 函数声明中的形式参数名在函数被调用时分配内存空间 B. 不同的函数中可以定义同名的局部变量 C. 函数定义中的形式参数名也是局部变量

D. 局部变量只在定义它的函数或复合语句(块)中有效

20. 关于函数模板的叙述中,正确的是( ) A. 函数模板也是一个具体类型的函数

B. 函数模板的类型参数与函数的参数是同一个概念

C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型

21. 在函数的传值调用中,要求( )

A. 形参和实参类型任意,个数相等 B. 形参和实参类型相同,个数相等 C. 形参和实参对应类型一致,个数相等 D. 形参和实参对应类型一致,个数任意

22. 适宜定义为内置函数的是( )

A. 函数体含有循环语句 B. 函数体含有递归语句 C. 需要加快程序的执行速度 D. 函数代码多且不常调用 23. 设函数模板定义为 template

T f(T x,T y){return x+y;}

对该函数模板使用不正确的是( )

A. f(4,8); B. f(4.9,8.5); C. f(12.8f,45.9f); D. f(\

24. 若在程序中有一个名字为a1的全局标识符,在该程序的某函数中有一个同名的局部标识符,

如果在该函数中访问这个同名的全局标识符,则该全局标识符应表示为( ) A. a1 B. a1:: C. ->a1 D. ::a1

25. 下列条件编译命令中下划线处是( ) #if( ) 语句1; #else 语句2; #endif

A. 整常量表达式 B任意标识符. C. 任意表达式 D. 被定义的宏名

26. 在函数的返回值类型与返回值表达式的类型描述中错误的是( ) A. 函数返回值的类型在函数定义时确 定,在函数调用时是不能改变的 B. 函数返回值的类型就是返回值表达式的类型

C. 函数返回值表达式类型与函数返回值类型不同时,表达式类型应转换成函数返回值类型 D. 函数返回值类型决定了返回值表达式的类型

27. 适合于实现功能不复杂但又要求有较快执行速度的函数是( ) A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数

28. 在函数说明中,不必要的是( )

A. 函数的类型 B. 函数参数的类型 C. 函数的名字 D. 函数参数的名字

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4