内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元3的第10练,内容涵盖单元3“身高体型判定系统”的数据处理3.5 身高体型判定系统实现(BMI计算、单位转换、输入合法性检查)。
《C语言程序设计》(高教版第2版)一课一练 第10练
单元3 “身高体型判定系统”的数据处理
3.5身高体型判定系统实现(BMI计算、单位转换、输入合法性检查)
1、 单项选择题(本题共5小题)
1、已知子女成年身高预测公式:男孩身高 =(父身高 + 母身高 + 13)/2,女孩身高 =(父身高 + 母身高 - 13)/2,下列 C 语言代码实现男孩身高计算正确的是( )
A. boy_height = father + mother +13 / 2;
B. boy_height = (father + mother +13) / 2.0;
C. boy_height = (father + mother) +13 / 2;
D. boy_height = (father + mother +13) % 2;
2、体型判定系统中,BMI 指数计算公式为BMI=体重(kg)/(身高(m)×身高(m)),若身高输入单位为厘米,需先转换为米,下列转换代码正确的是( )
A. double height_m = height_cm / 100;
B. int height_m = height_cm % 100;
C. double height_m = height_cm * 100;
D. float height_m = height_cm + 100;
3、在体型判定中,需根据 BMI 值判断体型(如 BMI<18.5 为偏瘦,18.5≤BMI<24 为正常),下列条件判断语句正确的是( )
A. if(bmi < 18.5) printf("偏瘦"); else if(bmi <24) printf("正常");
B. if(bmi < 24) printf("正常"); else if(bmi <18.5) printf("偏瘦");
C. switch(bmi) { case <18.5: printf("偏瘦"); break; }
D. if(bmi <=18.5) printf("偏瘦"); else printf("正常");
4、开发身高预测系统时,输入父母身高适合使用的数据类型是( )
A. char
B. int
C. double
D. short
5、下列关于身高预测与体型判定系统的描述,错误的是( )
A. 需使用scanf获取用户输入的身高、体重等数据
B. 体型判定需用到逻辑运算符组合条件
C. 身高预测公式中的加减 13 是固定的经验值
D. 所有计算都必须使用整数类型保证结果准确
2、 判断题(本题共4题)
1、在身高预测系统中,判断用户输入的性别为男孩时,可使用条件if(sex == '男'),其中sex需定义为char类型。( )
2、体型判定中,若身高输入为 175 厘米,直接代入 BMI 公式bmi = weight/175*175即可得到正确结果。( )
3、身高预测系统中,使用printf("预测身高:%.1fcm
", height);可以保留 1 位小数输出预测结果。( )
4、在体型判定的多分支结构中,else语句必须和if语句配对使用,不能单独存在。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序实现身高预测 + 体型判定的综合功能,用户输入父母身高、自身性别、当前身高体重,先预测成年身高,再判定当前体型,需补充缺失代码;
(1) // 引入标准输入输出头文件
int main() {
double father_h, mother_h, predict_h, self_h, weight, bmi;
char sex;
printf("请输入父亲身高(cm)、母亲身高(cm):");
scanf("%lf %lf", &father_h, &mother_h);
printf("请输入你的性别(男/女):");
scanf(" %c", &sex);
// 预测成年身高
if(sex == '男'){
predict_h = (2) ;
} else if(sex == '女'){
predict_h = (father_h + mother_h -13)/2.0;
}
printf("你的成年预测身高为:%.1fcm
", predict_h);
printf("请输入你的当前身高(cm)、体重(kg):");
scanf("%lf %lf", &self_h, &weight);
// 计算BMI指数
(3) ;
// 判定体型
printf("你的当前体型:");
if(bmi < 18.5){
printf("偏瘦
");
} else if((4) ){
printf("正常
");
} else if(bmi <28){
printf("超重
");
} else {
printf("肥胖
");
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元3的第10练,内容涵盖单元3“身高体型判定系统”的数据处理3.5 身高体型判定系统实现(BMI计算、单位转换、输入合法性检查)。
《C语言程序设计》(高教版第2版)一课一练 第10练
单元3 “身高体型判定系统”的数据处理
3.5身高体型判定系统实现(BMI计算、单位转换、输入合法性检查)
1、 单项选择题(本题共5小题)
1、已知子女成年身高预测公式:男孩身高 =(父身高 + 母身高 + 13)/2,女孩身高 =(父身高 + 母身高 - 13)/2,下列 C 语言代码实现男孩身高计算正确的是( )
A. boy_height = father + mother +13 / 2;
B. boy_height = (father + mother +13) / 2.0;
C. boy_height = (father + mother) +13 / 2;
D. boy_height = (father + mother +13) % 2;
【答案】B
【解析】公式需优先计算父身高、母身高与 13 的和,因此要加括号保证运算顺序;使用2.0而非2是为了避免整数除法丢失精度,确保结果为浮点数,选项 B 符合要求。
2、体型判定系统中,BMI 指数计算公式为BMI=体重(kg)/(身高(m)×身高(m)),若身高输入单位为厘米,需先转换为米,下列转换代码正确的是( )
A. double height_m = height_cm / 100;
B. int height_m = height_cm % 100;
C. double height_m = height_cm * 100;
D. float height_m = height_cm + 100;
【答案】A
【解析】厘米转米需除以 100,使用double类型存储可保证精度;选项 B 的%是取余运算符,选项 C、D 的运算逻辑完全错误,选项 A 正确。
3、在体型判定中,需根据 BMI 值判断体型(如 BMI<18.5 为偏瘦,18.5≤BMI<24 为正常),下列条件判断语句正确的是( )
A. if(bmi < 18.5) printf("偏瘦"); else if(bmi <24) printf("正常");
B. if(bmi < 24) printf("正常"); else if(bmi <18.5) printf("偏瘦");
C. switch(bmi) { case <18.5: printf("偏瘦"); break; }
D. if(bmi <=18.5) printf("偏瘦"); else printf("正常");
【答案】A
【解析】条件判断需按从低到高的顺序,先判断偏瘦的临界值,再判断正常的临界值;选项 B 的顺序会导致所有 BMI<24 的情况都被判定为正常,错误;switch不能直接使用范围条件,选项 C 错误;选项 D 的临界值包含 18.5,不符合题目标准,选项 A 正确。
4、开发身高预测系统时,输入父母身高适合使用的数据类型是( )
A. char
B. int
C. double
D. short
【答案】C
【解析】父母身高可能包含小数(如 175.5cm),double类型能存储带小数的数值且精度更高;char、short、int只能存储整数,会丢失小数部分的精度,选项 C 正确。
5、下列关于身高预测与体型判定系统的描述,错误的是( )
A. 需使用scanf获取用户输入的身高、体重等数据
B. 体型判定需用到逻辑运算符组合条件
C. 身高预测公式中的加减 13 是固定的经验值
D. 所有计算都必须使用整数类型保证结果准确
【答案】D
【解析】身高、体重及计算结果多为小数,使用浮点类型(float/double)才能保证精度,使用整数类型会导致结果误差较大,选项 D 描述错误。
2、 判断题(本题共4题)
1、在身高预测系统中,判断用户输入的性别为男孩时,可使用条件if(sex == '男'),其中sex需定义为char类型。( )
【答案】×
【解析】C 语言的 char 类型仅支持单个字符,不能存储 “男” 这类汉字,'男' 是非法字符常量,该语句不能正确运行。
2、体型判定中,若身高输入为 175 厘米,直接代入 BMI 公式bmi = weight/175*175即可得到正确结果。( )
【答案】×
【解析】BMI 公式要求身高单位为米,需先将 175 厘米转换为 1.75 米,且正确的运算应为weight/(1.75*1.75),直接用厘米计算会导致结果放大 10000 倍,完全错误。
3、身高预测系统中,使用printf("预测身高:%.1fcm
", height);可以保留 1 位小数输出预测结果。( )
【答案】√
【解析】%.1f是格式化输出符,用于指定浮点数保留 1 位小数输出,符合身高结果的展示需求,语法正确。
4、在体型判定的多分支结构中,else语句必须和if语句配对使用,不能单独存在。( )
【答案】√
【解析】C 语言中else是if的分支补充,必须依附于前面的if语句,单独的else会导致编译错误,逻辑规则正确。
3、 程序填空题(本题共1题)
1、题目描述:以下程序实现身高预测 + 体型判定的综合功能,用户输入父母身高、自身性别、当前身高体重,先预测成年身高,再判定当前体型,需补充缺失代码;
(1) // 引入标准输入输出头文件
int main() {
double father_h, mother_h, predict_h, self_h, weight, bmi;
char sex;
printf("请输入父亲身高(cm)、母亲身高(cm):");
scanf("%lf %lf", &father_h, &mother_h);
printf("请输入你的性别(男/女):");
scanf(" %c", &sex);
// 预测成年身高
if(sex == '男'){
predict_h = (2) ;
} else if(sex == '女'){
predict_h = (father_h + mother_h -13)/2.0;
}
printf("你的成年预测身高为:%.1fcm
", predict_h);
printf("请输入你的当前身高(cm)、体重(kg):");
scanf("%lf %lf", &self_h, &weight);
// 计算BMI指数
(3) ;
// 判定体型
printf("你的当前体型:");
if(bmi < 18.5){
printf("偏瘦
");
} else if((4) ){
printf("正常
");
} else if(bmi <28){
printf("超重
");
} else {
printf("肥胖
");
}
return 0;
}
【答案】
(1)#include <stdio.h>
(2)(father_h + mother_h +13)/2.0
(3)bmi = weight / ((self_h/100)*(self_h/100))
(4)bmi >=18.5 && bmi <24;
【解析】
(1)程序使用scanf、printf等输入输出函数,必须包含<stdio.h>头文件,确保编译器识别这些函数;
(2)对应男孩身高预测公式,先计算父身高、母身高与 13 的和,再除以 2.0 避免整数除法,保证结果为浮点数;
(3)先将厘米转换为米(self_h/100),再计算身高的平方,最后用体重除以该值得到 BMI 指数,符合公式逻辑;
(4)对应体型正常的 BMI 区间,需用逻辑与运算符&&同时满足两个条件,保证区间判断的准确性。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$