第22练 单元5 问题解决(循环经典案例)、身高体型判定系统完整版《C语言程序设计》(高教版第2版)一课一练

2026-04-28
| 2份
| 9页
| 49人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元5的第22练,内容涵盖单元5“身高体型判定系统”完整版的5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版。 《C语言程序设计》(高教版第2版)一课一练 第22练 单元5 “身高体型判定系统”完整版 5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版 1、 单项选择题(本题共5小题) 1、关于斐波那契数列的递推逻辑,以下代码片段能正确生成数列前 40 项的是( ) A. int f1=1, f2=1, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } B. int f1=1, f2=0, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } C. int f1=1, f2=1, f3; for(int i=1; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } D. int f1=1, f2=1, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 - f2; printf("%d ", f3); f1 = f2; f2 = f3; } 【答案】A 【解析】斐波那契数列前两项为 1、1,从第 3 项开始是前两项之和。选项 B 初始值 f2 为 0,不符合数列定义;选项 C 直接从第 3 项开始打印,遗漏前两项;选项 D 使用减法,递推逻辑错误;只有选项 A 的初始值、递推公式、循环范围均符合要求。 2、判断一个数 n 是否为素数时,优化后的循环范围通常是( ) A. i 从 2 到 n-1 B. i 从 2 到 n/2 C. i 从 2 到 sqrt (n) D. i 从 1 到 n 【答案】C 【解析】若 n 有因子,则一定存在小于等于 sqrt (n) 的因子,因此循环到 sqrt (n) 即可完成判断,能大幅减少循环次数,提升效率;选项 A 是基础逻辑但效率低,选项 B 效率有所提升但不如选项 C 优化彻底,选项 D 包含 1 和 n 本身,无意义。 3、以下关于 “水仙花数” 的描述,正确的是( ) A. 指各位数字的平方和等于自身的两位数 B. 指各位数字的立方和等于自身的三位数 C. 指各位数字的和等于自身的四位数 D. 指各位数字的乘积等于自身的五位数 【答案】B 【解析】水仙花数的定义是三位数,其个位、十位、百位数字的立方和等于该数本身,例如 153=1³+5³+3³,选项 B 完全符合该定义。 4、用循环求 π 的近似值,终止条件为 “某一项的绝对值小于 10⁻⁸”,以下判断逻辑正确的是( ) A. while (fabs (term) >= 1e-8) B. while (fabs (term) > 1e8) C. while (term >= 1e-8) D. while (term < 1e-8) 【答案】A 【解析】循环需在项的绝对值大于等于 10⁻⁸时继续执行;选项 B 的阈值错误,选项 C 未考虑负数项,选项 D 循环条件与要求相反。 5、李白打酒问题中,若按 “店、花、店、花、店、花” 的顺序,用还原法计算初始酒量,正确的表达式是( ) A. ((0+1)*2+1)2+1)/2 B. (((0+1)/2+1)/2+1)/2 C. ((02+1)*2+1)*2+1 D. (((0+1)*2+1)*2+1)*2 【答案】B 【解析】还原法需从最后一步倒推:最后见花喝光(0),则见花前酒量为 0+1=1;之前遇店加倍,遇店前酒量为 1/2;重复该逻辑三次,最终得到初始酒量为 (((0+1)/2+1)/2+1)/2。 2、 判断题(本题共4题) 1、判断素数时,循环范围从 2 到 n/2 和从 2 到 sqrt (n) 的结果完全一致,只是效率不同。( ) 【答案】√ 【解析】若 n 存在因子,必然有一个因子小于等于 sqrt (n),也必然小于等于 n/2(n≥2 时),因此两种范围都能正确判断素数,只是 sqrt (n) 的范围更小,效率更高。 2、斐波那契数列的第 1 项和第 2 项均为 1,从第 3 项开始每一项是前两项之和。( ) 【答案】√ 【解析】这是斐波那契数列的经典定义,对应兔子繁殖问题的规律:第 1、2 个月只有 1 对兔子,从第 3 个月开始每月的兔子数是前两个月之和。 3、水仙花数包含两位数和三位数,只要各位数字立方和等于自身即可。( ) 【答案】× 【解析】水仙花数特指三位数,两位数中不存在满足 “各位数字立方和等于自身” 的数,因此题目描述错误。 4、用循环计算 π 的近似值时,每一项的符号与前一项相反,分母比前一项大 2。( ) 【答案】√ 【解析】根据 π 的近似计算公式,通项为 (-1)^(n+1)/(2n-1),因此符号交替变化,分母依次为 1、3、5… 每次增加 2,符合题目描述。 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于输出所有水仙花数,请补充缺失代码使程序正常运行。 #include <stdio.h> int main() { int n, a, b, c; // 遍历所有三位数 for( (1)____; n<=999; n++ ) { // 拆分百位数字 a = n / 100; // 拆分十位数字 b = (2)____; // 拆分个位数字 c = n % 10; // 判断是否为水仙花数 if( (3)____ ) { printf("%d ", n); } } return 0; }【答案】 (1) n=100 (2) (n/10)%10 (3) a*a*a + b*b*b + c*c*c == n 【解析】 (1) 水仙花数是三位数,因此循环变量 n 从 100 开始,遍历到 999,符合数据范围要求。 (2) 十位数字的拆分方法是先将 n 除以 10 取整(去掉个位),再对 10 取余,得到十位数字,(n/10)%10 是正确的拆分逻辑。 (3) 根据水仙花数的定义,判断各位数字的立方和是否等于原数,C 语言中立方运算应使用 变量*变量*变量 的形式,正确写法为 a*a*a + b*b*b + c*c*c == n(也可使用 pow(a,3) + pow(b,3) + pow(c,3) == n,但需包含 <math.h> 头文件)。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元5的第22练,内容涵盖单元5“身高体型判定系统”完整版的5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版。 《C语言程序设计》(高教版第2版)一课一练 第22练 单元5 “身高体型判定系统”完整版 5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版 1、 单项选择题(本题共5小题) 1、关于斐波那契数列的递推逻辑,以下代码片段能正确生成数列前 40 项的是( ) A. int f1=1, f2=1, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } B. int f1=1, f2=0, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } C. int f1=1, f2=1, f3; for(int i=1; i<=40; i++){ f3 = f1 + f2; printf("%d ", f3); f1 = f2; f2 = f3; } D. int f1=1, f2=1, f3; printf("%d %d ", f1, f2); for(int i=3; i<=40; i++){ f3 = f1 - f2; printf("%d ", f3); f1 = f2; f2 = f3; } 2、判断一个数 n 是否为素数时,优化后的循环范围通常是( ) A. i 从 2 到 n-1 B. i 从 2 到 n/2 C. i 从 2 到 sqrt (n) D. i 从 1 到 n 3、以下关于 “水仙花数” 的描述,正确的是( ) A. 指各位数字的平方和等于自身的两位数 B. 指各位数字的立方和等于自身的三位数 C. 指各位数字的和等于自身的四位数 D. 指各位数字的乘积等于自身的五位数 4、用循环求 π 的近似值,终止条件为 “某一项的绝对值小于 10⁻⁸”,以下判断逻辑正确的是( ) A. while (fabs (term) >= 1e-8) B. while (fabs (term) > 1e8) C. while (term >= 1e-8) D. while (term < 1e-8) 5、李白打酒问题中,若按 “店、花、店、花、店、花” 的顺序,用还原法计算初始酒量,正确的表达式是( ) A. ((0+1)*2+1)2+1)/2 B. (((0+1)/2+1)/2+1)/2 C. ((02+1)*2+1)*2+1 D. (((0+1)*2+1)*2+1)*2 2、 判断题(本题共4题) 1、判断素数时,循环范围从 2 到 n/2 和从 2 到 sqrt (n) 的结果完全一致,只是效率不同。( ) 2、斐波那契数列的第 1 项和第 2 项均为 1,从第 3 项开始每一项是前两项之和。( ) 3、水仙花数包含两位数和三位数,只要各位数字立方和等于自身即可。( ) 4、用循环计算 π 的近似值时,每一项的符号与前一项相反,分母比前一项大 2。( ) 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于输出所有水仙花数,请补充缺失代码使程序正常运行。 #include <stdio.h> int main() { int n, a, b, c; // 遍历所有三位数 for( (1)____; n<=999; n++ ) { // 拆分百位数字 a = n / 100; // 拆分十位数字 b = (2)____; // 拆分个位数字 c = n % 10; // 判断是否为水仙花数 if( (3)____ ) { printf("%d ", n); } } return 0; 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第22练 单元5 问题解决(循环经典案例)、身高体型判定系统完整版《C语言程序设计》(高教版第2版)一课一练
1
第22练 单元5 问题解决(循环经典案例)、身高体型判定系统完整版《C语言程序设计》(高教版第2版)一课一练
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。