第6周——函数分工与合作的艺术

函数原型

1、单选题:
‎下列说法错误的是()。‍
选项:
A: 当函数原型与函数定义中的形参类型不一致时,编译器一般都会指出参数类型不匹配的编译错误。因此,写上函数原型有助于编译器对函数参数进行类型匹配检查。
B: 函数声明是一条语句,不包括函数体。
C: 无论何种情况,只要把用户自定义的所有函数都放在main函数的前面,就可以不用写函数原型了。
D: 函数调用时,要求实参与形参的数量相等,它们的类型也要匹配,匹配的原则与变量赋值的原则一致。当函数调用时的实参与函数定义中的形参的类型不匹配时,有的编译器会发出警告,提示有可能出现数据信息丢失,而有的编译器则不会发出警告。
答案: 【 无论何种情况,只要把用户自定义的所有函数都放在main函数的前面,就可以不用写函数原型了。

函数名的命名

1、多选题:
‎下面所列举的函数名正确且具有良好风格的是()‌
选项:
A: 2_abcd()
B: GetNumber()   
C: change_directory()
D: chushihua@()
答案: 【 GetNumber()   ;
change_directory()

函数封装与程序的健壮性

1、单选题:
‍下列说法错误的是()。‌
选项:
A: 我们常将程序具有遇到不正确使用或非法数据输入时仍能保护自己避免出错的能力称为程序的健壮性。
B: 在函数的入口处增加对函数参数合法性的检查以及对函数调用是否成功的检查,是一种常用的增强程序健壮性的方法。
C: 对于一个封装好的函数,外界对函数的影响仅限于入口参数,函数对外界的影响仅限于函数的返回值和数组、指针形参 。
D: 编译器给出的警告信息无关紧要,因此可以忽略。
答案: 【 编译器给出的警告信息无关紧要,因此可以忽略。

函数的参数和返回值

1、单选题:
‎下列说法中错误的是()。‎
选项:
A: 函数中的return语句可以有多个,但是多个return语句并不表示函数可以用return返回多个值,用return返回的函数值只能有一个。
B: 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。
C: 形参也是局部变量,只能在函数体内访问。
D: 在C语言中,实参与其对应的形参各占独立的存储单元,函数调用时的参数传递就是把实参的值复制一份给形参,即由实参向形参进行单向传值,因此形参值的变化不影响实参的值。
答案: 【 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元,此时形参值的变化会影响到实参的值。

断言

1、单选题:
‎下列说发错误的是()。‍
选项:
A: assert()其实是一个在<assert.h>中定义的宏,用来验证“不应该”发生的情况是否的确不会发生。
B: assert()的功能就是验证assert后括号内表达式值的真假,当该表达式的值为真时,它什么也不做。反之,则立即终止程序的执行,并报告错误,但是不会对错误采取其他处理措施。
C: 在使用assert()时,必须在源文件中用编译预处理指令包含头文件<assert.h>。
D: 断言不仅可以用于调试程序,还可以作为程序的功能,检查有可能发生的程序错误。
答案: 【 断言不仅可以用于调试程序,还可以作为程序的功能,检查有可能发生的程序错误。

断言的使用场合

1、多选题:
‏在下列哪些情况下适合使用断言?‍
选项:
A: 检查程序中的各种假设的正确性。
B: 证实或测试某种不可能发生的状况确实不会发生。
C: 捕捉不应该或者不可能发生的非法情况。
D: 捕捉程序中有可能出现的错误。
答案: 【 检查程序中的各种假设的正确性。;
证实或测试某种不可能发生的状况确实不会发生。;
捕捉不应该或者不可能发生的非法情况。

第7周——《盗梦空间》的逻辑探寻递归的奥秘

全局变量的副作用

1、判断题:
‎全局变量破坏了函数的封装性,不能实现信息隐藏,依赖全局变量的函数很难在其他程序中复用,对于使用全局变量的程序维护也比较困难,因此建议尽量不用全局变量。‌
选项:
A: 正确
B: 错误
答案: 【 正确

函数的嵌套调用和递归调用

1、单选题:
​下列说法错误的是()​
选项:
A: 函数既可以嵌套定义,也可以嵌套调用。
B: 函数直接或间接调用自己,称为递归调用。
C: 一个递归算法必须包含一般条件和基本条件两个基本要素。
D: 基本条件是一个能控制递归过程结束的条件,是递归的出口,它本身不再使用递归的方式来定义。一般条件定义了递归关系,控制递归调用向着基本条件的方向转化。
答案: 【 函数既可以嵌套定义,也可以嵌套调用。

变量的作用域

1、单选题:
‎下列说法错误的是()。‌
选项:
A: 变量的作用域是指变量的作用范围,即在程序中可以被读写访问的区域,它取决于变量被定义的位置。
B: 局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用。
C: 形参也是局部变量,形参变量和实参变量的作用域是不同的,因此形参变量和实参变量同名时,二者互不干扰。
D: 只要同名的变量出现在不同的作用域内,二者互不干扰,编译器有能力区分不同作用域中的同名变量
答案: 【 局部变量与全局变量同名时,全局变量隐藏局部变量,即全局变量起作用,局部变量不起作用。

变量的存储类型与变量的作用域

1、单选题:
‍下列说法错误的是()。‍
选项:
A: 变量的作用域决定了变量可以被访问的范围,而变量的存储类型决定了变量的生存期。
B: 静态变量和全局变量都是在静态存储区中分配内存的,而自动变量是在动态存储区中分配内存的。
C: 用extern声明变量为外部变量的时候,编译器是对其分配内存的。
D: 静态局部变量和静态全局变量的生存期是相同的,但二者的作用域是不同的,而静态局部变量和自动变量的作用域都是局部的,但二者的生存期是不同的。
答案: 【 用extern声明变量为外部变量的时候,编译器是对其分配内存的。

尾递归

1、判断题:
‎当递归调用是整个函数体中最后执行的语句且它的返回值不属于任何表达式的一部分(即在回归阶段不需要任何计算)时,这种递归调用就是尾递归。‍‎‍
选项:
A: 正确
B: 错误
答案: 【 正确

递归的数学基础

1、判断题:
​数学归纳法是递归的数学基础。‍
选项:
A: 正确
B: 错误
答案: 【 正确

递归算法的执行过程

1、判断题:
‎递归算法的执行过程可分为递推和回归两个阶段。在递推阶段,必须要有终止递归的情况。当满足递归终止条件时,即获得最简单情况的解以后,开始进入回归阶段,即递归返回阶段。​‎​
选项:
A: 正确
B: 错误
答案: 【 正确

第8周—— 一堆数据来了,你准备好了吗

剩余75%内容付费后可查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注