第16练 单元4 解决问题、身高体型判定系统改进(BMI分级判定、简易菜单实现)《C语言程序设计》(高教版第2版)一课一练

2026-04-28
| 2份
| 7页
| 17人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 分支结构
使用场景 同步教学
学年 2026-2027
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 132 KB
发布时间 2026-04-28
更新时间 2026-04-28
作者 爱学习的muller
品牌系列 上好课·一课一练
审核时间 2026-04-28
下载链接 https://m.zxxk.com/soft/57559739.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元4的第16练,内容涵盖单元4“身高体型判定系统”的决策判定的4.3、4.5 解决问题、身高体型判定系统改进(BMI分级判定、简易菜单实现)。 《C语言程序设计》(高教版第2版)一课一练 第16练 单元4 “身高体型判定系统”的决策判定 4.3、4.5 解决问题、身高体型判定系统改进(BMI分级判定、简易菜单实现) 1、 单项选择题(本题共5小题) 1、已知int a=5,b=3;,以下能实现 a 和 b 值交换的代码是( ) A. a=b; b=a; B. int temp=a; a=b; b=temp; C. a=a-b; b=a+b; a=b-a; D. a=a+b; a=a-b; b=b-a; 2、判断某年份 year 是否为闰年的正确条件表达式是( ) A. year%4==0 || year%100!=0 && year%400==0 B. year%4==0 && year%100!=0 || year%400==0 C. year%4==0 && year%100==0 || year%400==0 D. year%4==0 || year%400==0 3、合并 “身高预测系统” 和 “体型判定系统” 时,最适合处理用户选择的分支结构是( ) A. if-else if 语句 B. while 循环语句 C. do-while 循环语句 D. 嵌套 if 语句 4、判断一元二次方程ax²+bx+c=0是否为一元二次方程时,正确的条件是( ) A. a==0 B. fabs(a)>1e-6 C. a>1e-6 D. a<1e-6 5、对三个整数 a、b、c 进行升序排序,以下步骤逻辑正确的是( ) A. 先比较 a 和 b,确保 a≤b;再比较 a 和 c,确保 a≤c;最后比较 b 和 c,确保 b≤c B. 直接将 a 赋值为最小值,b 赋值为中间值,c 赋值为最大值 C. 仅比较 a 和 c,将较小值赋值给 a,较大值赋值给 c D. 先比较 b 和 c,确保 b≤c;再比较 a 和 c,确保 a≤c 2、 判断题(本题共4题) 1、交换两个变量的值必须借助临时变量,否则无法实现。( ) 2、当一元二次方程的判别式b*b-4*a*c<0时,方程没有实数根,无需处理。( ) 3、执行代码int year=1900; if(year%4==0 && year%100!=0 || year%400==0) printf("闰年"); else printf("非闰年"); 输出结果为 “闰年”。( ) 4、三数升序排序时,最多需要进行 3 次交换操作。( ) 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于实现垃圾分类查询系统,用户输入垃圾对应的字母(a-z),程序输出该垃圾的分类,需补充缺失代码使程序正常运行。 #include <stdio.h> int main() { (1)____; // 定义存储用户输入的变量 printf("垃圾分类查询系统 "); printf("请输入垃圾对应的字母(a-z):"); scanf("%c", &garbage); // 判断可回收垃圾(a-g) if(garbage >= 'a' && (2)____){ printf("该垃圾属于:可回收垃圾 "); } // 判断厨余垃圾(h-n) else if(garbage >= 'h' && garbage <= 'n'){ printf("该垃圾属于:厨余垃圾 "); } // 判断有害垃圾(o-t) else if((3)____ && garbage <= 't'){ printf("该垃圾属于:有害垃圾 "); } // 其他垃圾(u-z或无法识别) else{ printf("(4)____ "); } return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元4的第16练,内容涵盖单元4“身高体型判定系统”的决策判定的4.3、4.5 解决问题、身高体型判定系统改进(BMI分级判定、简易菜单实现)。 《C语言程序设计》(高教版第2版)一课一练 第16练 单元4 “身高体型判定系统”的决策判定 4.3、4.5 解决问题、身高体型判定系统改进(BMI分级判定、简易菜单实现) 1、 单项选择题(本题共5小题) 1、已知int a=5,b=3;,以下能实现 a 和 b 值交换的代码是( ) A. a=b; b=a; B. int temp=a; a=b; b=temp; C. a=a-b; b=a+b; a=b-a; D. a=a+b; a=a-b; b=b-a; 【答案】B 【解析】选项 A 执行后 a 和 b 都会变为 3,无法实现交换;选项 C、D 虽然能通过算术运算实现交换,但逻辑较复杂;选项 B 借助临时变量 temp 存储 a 的原值,再依次赋值,逻辑直观清晰,是中职阶段最常用的交换方法。 2、判断某年份 year 是否为闰年的正确条件表达式是( ) A. year%4==0 || year%100!=0 && year%400==0 B. year%4==0 && year%100!=0 || year%400==0 C. year%4==0 && year%100==0 || year%400==0 D. year%4==0 || year%400==0 【答案】B 【解析】根据 “四年一闰、百年不闰、四百年再闰” 的规则,需满足 “能被 4 整除但不能被 100 整除” 或 “能被 400 整除”。由于&&优先级高于||,选项 B 的逻辑顺序正确,符合闰年判定规则。 3、合并 “身高预测系统” 和 “体型判定系统” 时,最适合处理用户选择的分支结构是( ) A. if-else if 语句 B. while 循环语句 C. do-while 循环语句 D. 嵌套 if 语句 【答案】A 【解析】用户只有 2 个固定选择项,if-else if 语句可以直接针对不同选择执行对应功能,逻辑简单清晰;循环语句用于重复执行代码,嵌套 if 会增加不必要的复杂度,均不符合需求。 4、判断一元二次方程ax²+bx+c=0是否为一元二次方程时,正确的条件是( ) A. a==0 B. fabs(a)>1e-6 C. a>1e-6 D. a<1e-6 【答案】B 【解析】实型数据存储存在误差,不能直接用a==0判断。需通过fabs(a)>1e-6判断 a 的绝对值大于极小值,确定 a 不为 0,此时才是一元二次方程。 5、对三个整数 a、b、c 进行升序排序,以下步骤逻辑正确的是( ) A. 先比较 a 和 b,确保 a≤b;再比较 a 和 c,确保 a≤c;最后比较 b 和 c,确保 b≤c B. 直接将 a 赋值为最小值,b 赋值为中间值,c 赋值为最大值 C. 仅比较 a 和 c,将较小值赋值给 a,较大值赋值给 c D. 先比较 b 和 c,确保 b≤c;再比较 a 和 c,确保 a≤c 【答案】A 【解析】三数升序排序需通过两两比较交换,逐步将最小值放到 a,中间值放到 b,最大值放到 c。选项 A 的步骤完整覆盖所有两两组合,能确保最终结果为升序排列。 2、 判断题(本题共4题) 1、交换两个变量的值必须借助临时变量,否则无法实现。( ) 【答案】× 【解析】除了临时变量法,还可以通过算术运算(如a=a+b; b=a-b; a=a-b;)或位运算实现变量值交换,无需临时变量。 2、当一元二次方程的判别式b*b-4*a*c<0时,方程没有实数根,无需处理。( ) 【答案】× 【解析】判别式小于 0 时,方程有两个共轭复根,需以p+qi和p-qi的形式输出结果,并非无需处理。 3、执行代码int year=1900; if(year%4==0 && year%100!=0 || year%400==0) printf("闰年"); else printf("非闰年"); 输出结果为 “闰年”。( ) 【答案】× 【解析】1900 年是整百年份,虽然能被 4 整除,但无法被 400 整除,符合 “百年不闰” 的规则,因此属于非闰年,代码最终会输出 “非闰年”,题目说法错误。 4、三数升序排序时,最多需要进行 3 次交换操作。( ) 【答案】√ 【解析】三数排序需两两比较 3 次,每次比较若不符合顺序则进行交换,因此最多需要 3 次交换操作。 3、 程序填空题(本题共1题) 1、题目描述:以下程序用于实现垃圾分类查询系统,用户输入垃圾对应的字母(a-z),程序输出该垃圾的分类,需补充缺失代码使程序正常运行。 #include <stdio.h> int main() { (1)____; // 定义存储用户输入的变量 printf("垃圾分类查询系统 "); printf("请输入垃圾对应的字母(a-z):"); scanf("%c", &garbage); // 判断可回收垃圾(a-g) if(garbage >= 'a' && (2)____){ printf("该垃圾属于:可回收垃圾 "); } // 判断厨余垃圾(h-n) else if(garbage >= 'h' && garbage <= 'n'){ printf("该垃圾属于:厨余垃圾 "); } // 判断有害垃圾(o-t) else if((3)____ && garbage <= 't'){ printf("该垃圾属于:有害垃圾 "); } // 其他垃圾(u-z或无法识别) else{ printf("(4)____ "); } return 0; } 【答案】(1) char garbage (2) garbage <= 'g' (3) garbage >= 'o' (4) 该垃圾属于:其他垃圾 【解析】 (1)用户输入的是单个字母,使用char类型定义变量garbage,符合字符型数据的存储规则,满足输入需求。 (2)可回收垃圾对应字母范围是 a 到 g,此处补充garbage <= 'g',完成范围判断逻辑,确保所有可回收垃圾的字母都能被识别。 (3)有害垃圾对应字母范围是 o 到 t,此处补充garbage >= 'o',完善分支条件,覆盖所有有害垃圾的字母。 (4)当输入不在 a-t 范围内或无法识别时,按规则归为其他垃圾,输出对应提示,增强程序的健壮性,符合题目给定的分类原则。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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