大学MOOC C++程序设计2-2(天津师范大学)1462666205 最新慕课完整章节测试答案
第1讲函数的定义和使用
文章目录
第1讲掌握函数的定义和函数的调用方式
1、单选题:
下列特性中,C与C++共有的是:
选项:
A: 继承
B: 封装
C: 多态性
D: 函数定义不能嵌套
答案: 【 函数定义不能嵌套】
2、单选题:
必须用一对大括号括起来的程序段是:
选项:
A: switch语句中的case标号语句
B: if语句的分支
C: 循环语句的循环体
D: 函数的函数体
答案: 【 函数的函数体】
3、单选题:
关于C++主函数特性,下列叙述正确的是:
选项:
A: 主函数在同一个C++文件中可以有两个
B: 主函数类型必须是void类型
C: 主函数一定有返回值
D: 每个C++程序都必须有一个main()函数
答案: 【 每个C++程序都必须有一个main()函数】
4、单选题:
在C++语言中,main函数默认返回一个( )类型的值
选项:
A: int
B: float
C: char
D: void
答案: 【 int】
5、单选题:
C++语言中规定函数的返回值的类型是由:
选项:
A: return语句中的表达式类型所决定
B: 调用该函数时的主调用函数类型所决定
C: 调用该函数时系统临时决定
D: 在定义该函数时多指定的数据类型所决定
答案: 【 在定义该函数时多指定的数据类型所决定】
6、单选题:
若调用一个函数,且此函数中没有return语句,则正确的说法是该函数:
选项:
A: 没有返回值
B: 返回若干个系统默认值
C: 有返回值,但返回一个不确定的值
D: 回一个用户所希望的函数值
答案: 【 有返回值,但返回一个不确定的值】
7、单选题:
下列叙述中错误的是:
选项:
A: 一个函数中可以有多条return语句
B: 调用函数必须在一条独立的语句中完成
C: 函数中通过return语句传递函数值
D: 主函数名main也可以带有形参
答案: 【 调用函数必须在一条独立的语句中完成】
8、单选题:
在C++中把不返回任何类型的函数应该说明为:
选项:
A: int
B: float
C: char
D: void
答案: 【 void】
9、单选题:
在函数的定义格式中,下面各组成部分中,( )是可以省略的。
选项:
A: 函数名
B: 函数数据类型说明
C: 函数体
D: 函数参数
答案: 【 函数参数】
10、单选题:
函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为:
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 2】
第2讲函数的调用
第2讲掌握函数的嵌套调用和递归调用
1、单选题:
在参数传递过程中,对形参和实参的要求是:
选项:
A: 函数定义时,形参一直占用存储空间
B: 实参可以是常量、变量或表达式
C: 形参可以是常量、变量或表达式
D: 形参和实参类型和个数都可以不同
答案: 【 实参可以是常量、变量或表达式】
2、单选题:
在函数的引用调用时,实参和形参应该是使用:
选项:
A: 变量值和变量
B: 地址值和指针
C: 地址值和引用
D: 变量值和引用
答案: 【 变量值和引用】
3、单选题:
使用值传递方式将实参传给形参,下列说法正确的是:
选项:
A: 形参是实参的备份
B: 实参是形参的备份
C: 形参和实参是同一对象
D: 形参和实参无联系
答案: 【 形参是实参的备份】
4、单选题:
下列函数调用中对调用它的函数没有起到任何作用的是:
选项:
A: void f1(double &x){--x;}
B: double f2(double x){return x-1.5;}
C: void f3(double x){--x;}
D: double f4(double *x){--*x;return *x;}
答案: 【 void f3(double x){--x;}】
5、单选题:
对于某个函数调用,不给出调用函数的声明的情况是:
选项:
A: 被调用函数是无参函数
B: 被调用函数是无返回值的函数
C: 函数的定义在调用处之前
D: 函数的定义有别的程序文件中
答案: 【 函数的定义在调用处之前】
6、单选题:
在哪种情况下适宜采用 inline 定义内联函数?
选项:
A: 函数体含有循环语句
B: 函数体含有递归语句
C: 函数代码少、频繁调用
D: 函数代码多、不常调用
答案: 【 函数代码少、频繁调用】
7、单选题:
下列哪个类型函数不适合声明为内联函数:
选项:
A: 函数体语句较多
B: 函数体语句较少
C: 函数执行时间较短
D: 函数执行时间过长
答案: 【 函数体语句较多】
8、单选题:
在C++中,编写一个内联函数Fsqu,使用double类型的参数,求其平方并返回,返回值为double类型,下列定义正确的是:
选项:
A: double Fsqu (double x){return x*x;}
B: inline double Fsqu (double x){return x*x;}
C: double inline Fsqu (double x){return x*x;}
D: double Fsqu (double x){inline return x*x;}
答案: 【 inline double Fsqu (double x){return x*x;}】
9、单选题:
已知递归函数f的定义如下:int f(int n){ if (n<=1) return 1; else return n*f(n-2);}则函数调用语句f(5)的返回值是:
选项:
A: 14
B: 15
C: 16
D: 17
答案: 【 15】
10、单选题:
在一个函数体中直接或间接地调用函数本身,这种调用称为()调用。
选项:
A: 嵌套
B: 递归
C: 直接
D: 间接
答案: 【 递归】
第3讲函数的设计
第3讲灵活运用函数重载、默认参数和函数模板
1、单选题:
指出下列对定义重载函数的要求中,( )是错误的。
选项:
A: 要求参数的个数相同
B: 要求参数的类型相同时,参数个数不同
C: 函数的返回值可以不同
D: 要求参数的个数相同时,参数类型不同
答案: 【 要求参数的个数相同】
2、单选题:
一个函数为void x(int,char ch=’a’),另一个函数为void x(int),则它们:
选项:
A: 不能在同一程序中定义
B: 可以在同一程序中定义并可重载
C: 可以在同一程序中定义,但不可以重载
D: 以上说法均不正确
答案: 【 可以在同一程序中定义,但不可以重载】
3、单选题:
重载函数在调用时选择的依据中,错误的是:
选项:
A: 函数的参数
B: 参数的类型
C: 函数的名字
D: 函数返回值类型
答案: 【 函数返回值类型】
4、单选题:
下列函数原型声明中错误的是:
选项:
A: void fun(int x=0,int y=0);
B: void fun(int x,int y);
C: void fun(int x,int y=0);
D: void fun(int x=0,int y);
答案: 【 void fun(int x=0,int y);】
5、单选题:
一个函数带有参数说明时,则参数的默认值应该在( )中给出。
选项:
A: 函数定义
B: 函数声明
C: 函数定义或声明
D: 函数调用
答案: 【 函数定义或声明】
6、单选题:
下列关于函数参数默认值的描述中,正确的是:
选项:
A: 函数参数的默认值只能设置一个
B: 若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值
C: 若一个函数含有多个参数,则设置默认参数时可以不连续设置默认值
D: C++语言中函数都必须设有默认值
答案: 【 若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值】
7、单选题:
模板函数的真正代码是在( )时候产生。
选项:
A: 源程序中声明函数时
B: 源程序中定义函数时
C: 源程序中的调用函数时
D: 运行执行函数时
答案: 【 源程序中的调用函数时】
8、单选题:
以下关于函数模板叙述正确的是:
选项:
A: 函数模板也是一个具体类型的函数
B: 函数模板的类型参数与函数的参数是同一个概念
C: 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D: 用函数模板定义的函数没有类型
答案: 【 通过使用不同的类型参数,函数模板可以生成不同类型的函数】
9、单选题:
常情况下,函数模板中的类型参数个数不能是:
选项:
A: 0
B: 1
C: 2
D: 3
答案: 【 0】
10、单选题:
实现两个相同类型数加法的函数模板的声明是:
选项:
A: add(T x,T y)
B: T add(x,y)
C: T add(T x,y)
D: T add(T x,T y)
答案: 【 T add(T x,T y)】
第4讲作用域、生命期和程序的组织结构
第4讲理解作用域、生命期和程序的组织结构
1、单选题:
不能实现函数之间数据传递的是:
选项:
A: 全局变量
B: 局部变量
C: 函数接口
D: 函数返回值
答案: 【 局部变量】
2、单选题:
所有在函数中定义的变量,连同形式参数,都是:
选项:
A: 全局变量
B: 局部变量
C: 静态变量
D: 寄存器变量
答案: 【 局部变量】
3、单选题:
内部静态变量的作用域是:
选项:
A: 定义该静态变量的函数外部
B: 定义该静态变量的函数内部
C: 定义该静态变量的文件外部
D: 定义该静态变量的文件内部
答案: 【 定义该静态变量的函数内部】
4、单选题:
进行初始化即可自动获取初值为0的变量是:
选项:
A: 任何用static修饰的变量
B: 任何在函数外定义的变量
C: 局部变量和用static修饰的全局变量
D: 全局变量和用static修饰的局部变量
答案: 【 全局变量和用static修饰的局部变量】
5、单选题:
在函数中,可以用auto,extern,register和static四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是:
选项:
A: auto
B: extern
C: register
D: static
答案: 【 auto】
6、单选题:
在一个C++源程序文件中定义的全局变量的有效范围是:
选项:
A: 该C++程序的所有源程序文件
B: 本源程序文件的全部范围
C: 从定义变量的位置开始到本源程序文件结束
D: 函数内部全部范围
答案: 【 从定义变量的位置开始到本源程序文件结束】
7、单选题:
在C++中有以下4条语句:static int hot=200;int &rad=hot;hot=hot+100;cout<<rad<<endl;执行这4条语句后输出为:
选项:
A: 0
B: 100
C: 200
D: 300
答案: 【 300】
8、单选题:
下面关于C++语言变量的叙述错误的是:
选项:
A: C++语言中变量为auto,static,extern和register四种存储类型
B: 自动变量和外部变量的作用域为整个程序
C: 内部静态变量的作用域是定义它的函数
D: 外部静态变量的作用域是定义它的文件
答案: 【 自动变量和外部变量的作用域为整个程序】
9、单选题:
如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,则说明这个函数为:
选项:
A: 私有函数
B: 内部函数
C: 外部函数
D: 库函数
答案: 【 内部函数】
10、单选题:
重新定义标识符的作用域规定是外层变量被隐藏,()变量是可见的。
选项:
A: 外层
B: 内层
C: 外层和内层
D: 内部
答案: 【 内层】
第5讲标准库
第5讲了解标准库的内容、掌握字符串流的使用
1、单选题:
下列关于C++流的说明中,正确的是:
选项:
A: 与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现
B: 从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作
C: cin是一个预定义的输入流类
D: 输出流有一个名为open的成员函数,其作用是生成一个新的流对象
答案: 【 与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现】
2、单选题:
在C++中使用流进行输入输出,其中用于屏幕输出的对象是:
选项:
A: cerr
B: cin
C: cout
D: cfile
答案: 【 cout】
3、单选题:
out、cerr、clog是( )的对象,cout处理标准输出,cerr和clog都处理标准出错信息
选项:
A: istream
B: ostream
C: cerr
D: clog
答案: 【 ostream】
4、单选题:
在下面格式化命令的解释中,错误的是:
选项:
A: ios::skipws 跳过输入中的空白字符
B: ios::fill() 获得当前的填充字符
C: ios::hex 转换基数为八进制形式
D: ios::precision 返回当前的精度
答案: 【 ios::hex 转换基数为八进制形式】
5、单选题:
在进行完任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是:
选项:
A: fail
B: eof
C: bad
D: good
答案: 【 eof】
第6讲文件
第6讲掌握文件的基本操作
1、单选题:
在C++中,打开一个文件,就是将整个文件与一个( )建立关联,关闭一个文件,就是取消这种关联
选项:
A: 类
B: 流
C: 对象
D: 结构
答案: 【 流】
2、单选题:
下列打开文件的表达式中,错误的是:
选项:
A: ofstream ofile;ofile.open(“C:\vc\abc.txt”,ios::binary);
B: fstream iofile;iofile.open(“abc.txt”,ios::ate);
C: ifstream ifile (“C:\vc\abc.txt”);
D: cout.open(“C:\vc\abc.txt”,ios::binary);
答案: 【 cout.open(“C:\vc\abc.txt”,ios::binary);】
3、单选题:
以下关于文件操作的叙述中,不正确的是:
选项:
A: 打开文件的目的是使文件对象与磁盘文件建立联系
B: 文件读写过程中,程序将直接与磁盘文件进行数据交换
C: 关闭文件的目的之一是保证将输出的数据写入硬盘文件
D: 关闭文件的目的之一是释放内存中的文件对象
答案: 【 文件读写过程中,程序将直接与磁盘文件进行数据交换】
4、单选题:
语句ofstream f("SALARY.DAT",ios::noreplace | ios::binary); 的功能是建立流对象f,并试图打开文件SALARY.DAT并与之连接,而且:
选项:
A: 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
B: 若文件存在,将其截为空文件;若文件不存在,打开失败
C: 若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件
D: 若文件存在,打开失败;若文件不存在,建立一个新文件
答案: 【 若文件存在,打开失败;若文件不存在,建立一个新文件】
5、单选题:
执行语句序列ofstream outf(“SALARY.DAT”);if(...)cout<<“成功”;else cout<<“失败”;后,如文件打开成功,显示”成功”,否则显示”失败”.由此可知,上面if语句的条件表达式是:
选项:
A: !outf或者outf.fail()
B: !outf或者outf.good()
C: outf或者outf.fail()
D: outf或者outf.good()
答案: 【 outf或者outf.good()】
第7讲数组的定义和使用
第7讲掌握数组的定义和使用
1、单选题:
下列关于数组的描述正确是:
选项:
A: 数组的长度是固定的,而其中元素的数据类型可以不同
B: 数组的长度是固定的,而其中元素的数据类型必须相同
C: 数组的长度是可变的,而其中元素的数据类型可以不同
D: 数组的长度是可变的,而其中元素的数据类型必须相同
答案: 【 数组的长度是固定的,而其中元素的数据类型必须相同】
2、单选题:
在C++语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是:
选项:
A: 整型常量
B: 整型表达式
C: 整型常量或整型表达式
D: 任何类型的表达式
答案: 【 任何类型的表达式】
3、单选题:
要定义数组A,使得其中每个元素的数据分别依次为:3、9、4、8、0、0、0,错误的定义语句是:
选项:
A: int A[]={3,9,4,8,0,0,0};
B: int A[9]={3,9,4,8,0,0,0};
C: int A[]={3,9,4,8};
D: int A[7]={3,9,4,8};
答案: 【 int A[]={3,9,4,8};】
4、单选题:
有如下数组声明:int value[30];,下标值引用错误的是:
选项:
A: value[30]
B: value[0]
C: value[10]
D: value[20]
答案: 【 value[30]】
5、单选题:
以下叙述中错误的是:
选项:
A: 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B: 数组名代表的是数组所占存储区的首地址,其值不可改变
C: 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D: 可以通过赋初值的方式确定数组元素的个数
答案: 【 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息】
6、单选题:
以下正确的二维数组定义是:
选项:
A: int a[][]={1,2,3,4,5,6};
B: int a[2][]={1,2,3,4,5,6};
C: int a[][3]={1,2,3,4,5,6};
D: int a[2,3]={1,2,3,4,5,6};
答案: 【 int a[][3]={1,2,3,4,5,6};】
7、单选题:
以下对二维数组a进行初始化正确的是:
选项:
A: int a[2][]={{1,0,1},{5,2,3}} ;
B: int a[
