内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《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 范围内或无法识别时,按规则归为其他垃圾,输出对应提示,增强程序的健壮性,符合题目给定的分类原则。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$