单元5 身高体型判定系统完整版(1.while和do-while循环)(练习)-《C语言程序设计》(高教版第2版)【上好课】

2026-05-14
| 2份
| 19页
| 42人阅读
| 0人下载

内容正文:

身高体型判定系统完整版(1.while和do-while循环) 一、单项选择题 1、以下关于 while 语句和 do…while 语句的核心区别,描述正确的是( ) A. while 语句的循环体至少执行一次,do…while 语句可能一次都不执行 B. while 语句先判断循环条件再执行循环体,do…while 语句先执行循环体再判断条件 C. while 语句的循环条件只能是关系表达式,do…while 语句的循环条件可以是任意表达式 D. while 语句需要用大括号包裹循环体,do…while 语句不需要 【答案】B 【解析】while 是 “先判断后执行” 的循环结构,若初始条件为假,循环体一次都不执行;do…while 是 “先执行后判断”,无论初始条件是否满足,循环体至少执行一次。选项 A、C、D 均错误:两者的循环条件都可以是任意合法表达式,循环体为多条语句时都需要大括号。 2、以下 while 循环代码中,语法正确的是( ) A. while(1) printf("循环中"); printf("循环外"); B. int count=1; while(count<=10) { printf("%d ",count); count++; } C. int sum=0; while(sum<10) sum+=2; printf("sum=%d",sum); D. while(5>3) int a=1; 【答案】B 【解析】选项 A 中printf("循环外");不属于循环体,会在循环结束后执行,但 while (1) 是死循环,永远不会执行到;选项 C 中printf("sum=%d",sum);不属于循环体,只会执行一次;选项 D 中循环体不能是变量定义语句,语法错误;选项 B 的循环体用大括号包裹,且有使循环结束的语句count++,语法和逻辑均正确。 3、do…while 语句的语法格式中,必须包含的部分是( ) A. 循环体结尾的分号 B. 大括号包裹的循环体 C. default 分支 D. break 语句 【答案】A 【解析】do…while 语句的格式要求在while(表达式)后必须加分号,否则会出现编译错误;选项 B 错误,循环体为单条语句时不需要大括号;选项 C、D 均不是 do…while 的必填部分。 4、执行以下代码后,循环体执行的次数是( ) int count=10; while(count<10) { printf("%d ",count); count++; } A. 0 次 B. 1 次 C. 10 次 D. 死循环 【答案】A 【解析】while 语句先判断循环条件,初始count=10,count<10为假,因此循环体一次都不执行。 5、执行以下 do…while 代码后,输出结果是( ) int num=5; do { printf("%d ",num); num--; } while(num>5); A. 无输出 B. 5 C. 5 4 3 2 1 D. 死循环 【答案】B 【解析】do…while 先执行循环体,输出5后num变为 4,再判断num>5为假,循环结束,因此仅输出一次 5。 6、以下代码中,属于死循环的是( ) A. int count=1; while(count<=10) { printf("%d ",count); count++; } B. int sum=0; while(sum<100) { sum+=10; } C. while('a') { printf("循环中"); } D. int i=0; do { i++; } while(i<5); 【答案】C 【解析】字符'a'的 ASCII 码值为 97,属于非 0 值,因此while('a')的条件永远为真,形成死循环;选项 A、B、D 的循环都会在满足条件后正常结束。 7、使用 while 语句求解 1+2+…+100 的和,循环条件应设置为( ) A. count<100 B. count<=100 C. sum<100 D. sum<=100 【答案】B 【解析】计数器count从 1 开始,需要累加至 100,因此循环条件应为count<=100,确保 100 被加入求和;若设置为count<100,则会漏掉 100,结果错误。 8、在 while 循环中,为了避免死循环,必须包含的语句是( ) A. break 语句 B. continue 语句 C. 使循环条件趋于结束的语句 D. return 语句 【答案】C 【解析】死循环是因为循环条件永远为真,因此循环体中必须有修改循环变量的语句(如count++),使循环条件最终变为假;选项 A 用于跳出循环,但不是避免死循环的必要语句;选项 B 用于跳过本次循环剩余语句;选项 D 用于终止程序。 9、以下关于 do…while 语句的描述,正确的是( ) A. do…while 语句的循环体只能是单条语句 B. do…while 语句的循环条件可以是浮点型表达式 C. do…while 语句的循环体一定会执行至少两次 D. do…while 语句不需要循环条件 【答案】B 【解析】循环条件可以是任意合法表达式,包括浮点型(非 0 即真);选项 A 错误,循环体为多条语句时可用大括号包裹;选项 C 错误,若第一次执行后循环条件为假,仅执行一次;选项 D 错误,do…while 必须有循环条件。 10、再次改进 “身高体型判定系统” 时,实现反复选择功能的核心是( ) A. 使用 if 语句嵌套 B. 使用 switch 语句多分支 C. 使用 while/do…while 循环结构 D. 使用函数调用 【答案】C 【解析】反复选择功能需要程序重复执行功能选择逻辑,直到用户选择退出,这是循环结构的典型应用场景;if 和 switch 仅能实现单分支或多分支选择,无法实现重复执行。 二、判断题 1、while 语句的循环体可能一次都不执行。( ) 【答案】√ 【解析】while 是 “先判断后执行” 的循环,若初始循环条件为假(0),循环体不会被执行,直接退出循环结构。 2、do…while 语句的循环体至少会执行一次。( ) 【答案】√ 【解析】do…while 的执行流程是先执行循环体,再判断循环条件,因此无论初始条件是否满足,循环体都会被执行至少一次。 3、while 循环中,当循环体包含多条语句时,不需要用大括号{}包裹。( ) 【答案】× 【解析】若不用大括号,编译器只会将第一条语句视为循环体,后续语句会被当作循环外的代码执行,导致逻辑错误,必须用大括号明确循环体的范围。 4、do…while 语句的结尾可以省略分号。( ) 【答案】× 【解析】do…while 语句的语法格式要求在while(表达式)后必须加分号,否则会出现编译错误,这是 do…while 与 while 的语法区别之一。 3、 填空题 1、while 语句的执行流程是____,再决定是否执行循环体。 【答案】先计算循环条件表达式的值 【解析】while 是 “先判断后执行” 的循环结构,只有当循环条件表达式的值为非 0(真)时,才会执行循环体语句。这是它与 do…while 循环的核心区别,也是避免死循环的关键判断节点。 2、do…while 语句的核心特点是____,之后再判断循环条件。 【答案】先无条件执行一次循环体 【解析】do…while 语句的执行顺序是先执行循环体代码,再计算循环条件表达式的值。因此无论初始条件是否满足,循环体至少会被执行一次,适合需要确保程序至少运行一次的场景。 3、当 while 或 do…while 循环的循环体包含多条语句时,必须用____将其包裹成复合语句。 【答案】大括号(或{}) 【解析】如果不用大括号包裹,编译器只会将第一条语句识别为循环体,后续语句会被当作循环外的代码执行,导致程序逻辑错误。大括号可以明确标记循环体的范围,保证多条语句都参与循环。 4、求解 1+2+…+100 的和时,累加器sum的初始值应设为____。 【答案】0 【解析】累加器需要从 0 开始逐步累加数值,若初始值设为非 0 值,会导致最终求和结果出现偏差。例如初始值设为 1,最终结果会比正确值多 1,不符合求和逻辑。 5、为了避免 while 循环出现 “死循环”,循环体中必须包含____的语句。 【答案】使循环条件趋于结束 【解析】死循环的本质是循环条件永远为真,因此需要在循环体中加入修改循环变量的语句(如count++),使循环条件最终变为假,保证循环能正常结束。 四、程序填空题 1、题目描述:以下程序用于实现可反复使用的 “身高体型判定系统”,用户可多次选择功能,直到选择 “3. 退出系统” 才结束程序,请补充缺失代码。 #include <stdio.h> int main() { int choice; float father, mother, predict_h, weight, height, bmi; char gender; // 开启do-while循环,确保系统至少运行一次 _(1)_ printf("=== 身高体型判定系统 === "); printf("1. 身高预测功能 "); printf("2. 体型判定功能 "); printf("3. 退出系统 "); printf("请选择功能(1/2/3):"); scanf("%d", &choice); switch(choice) { case 1: printf("请输入父亲身高(cm):"); scanf("%f", &father); printf("请输入母亲身高(cm):"); scanf("%f", &mother); printf("请输入孩子性别(M/m表示男,F/f表示女):"); scanf(" %c", &gender); // 填写男孩身高预测公式 if(gender == 'M' || gender == 'm') { predict_h = _(2) _; } else if(gender == 'F' || gender == 'f') { predict_h = (father + 0.923 * mother) / 2; } else { printf("性别输入错误! "); break; } printf("孩子的预测身高为:%.2f cm ", predict_h); break; case 2: printf("请输入您的体重(kg):"); scanf("%f", &weight); printf("请输入您的身高(m):"); scanf("%f", &height); // 填写BMI指数计算公式 bmi = _(3) _; printf("您的BMI指数为:%.2f ", bmi); if(bmi < 18.5) { printf("体型:偏瘦,建议增加营养摄入。 "); } else if(bmi >= 18.5 && bmi < 24) { printf("体型:正常,建议保持当前饮食和运动习惯。 "); } else if(bmi < 28) { printf("体型:偏胖,建议控制饮食并增加运动。 "); } else { printf("体型:肥胖,建议咨询营养师制定减重计划。 "); } break; case 3: printf("感谢使用本系统,再见! "); break; default: printf("输入错误,请选择1/2/3! "); } printf("------------------------- "); // 设置do-while的循环条件,当未选择退出时继续循环 __(4)__ return 0; } 【答案】 (1) do { (2) (father + mother) * 1.08 / 2 (3) weight / (height * height) (4) while (choice != 3); 【解析】 (1) 此处填写do {开启 do-while 循环,对应 do-while “先执行后判断” 的特性,确保系统至少运行一次,符合用户进入系统就可使用功能的需求。 (2) 男孩身高预测公式为(父亲身高+母亲身高)*1.08/2,这是教学内容中明确给出的身高预测规则,保证计算结果符合需求。 (3) BMI 指数的计算公式为体重除以身高的平方,是体型判定的核心计算逻辑,符合医学标准和教学内容。 (4) 此处填写while(choice != 3);设置循环条件,当用户未选择退出(choice≠3)时,系统会再次进入循环,实现反复使用的功能,紧扣 while 循环条件的知识点。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 身高体型判定系统完整版(1.while和do-while循环) 一、单项选择题 1、以下关于 while 语句和 do…while 语句的核心区别,描述正确的是( ) A. while 语句的循环体至少执行一次,do…while 语句可能一次都不执行 B. while 语句先判断循环条件再执行循环体,do…while 语句先执行循环体再判断条件 C. while 语句的循环条件只能是关系表达式,do…while 语句的循环条件可以是任意表达式 D. while 语句需要用大括号包裹循环体,do…while 语句不需要 2、以下 while 循环代码中,语法正确的是( ) A. while(1) printf("循环中"); printf("循环外"); B. int count=1; while(count<=10) { printf("%d ",count); count++; } C. int sum=0; while(sum<10) sum+=2; printf("sum=%d",sum); D. while(5>3) int a=1; 3、do…while 语句的语法格式中,必须包含的部分是( ) A. 循环体结尾的分号 B. 大括号包裹的循环体 C. default 分支 D. break 语句 4、执行以下代码后,循环体执行的次数是( ) int count=10; while(count<10) { printf("%d ",count); count++; } A. 0 次 B. 1 次 C. 10 次 D. 死循环 5、执行以下 do…while 代码后,输出结果是( ) int num=5; do { printf("%d ",num); num--; } while(num>5); A. 无输出 B. 5 C. 5 4 3 2 1 D. 死循环 6、以下代码中,属于死循环的是( ) A. int count=1; while(count<=10) { printf("%d ",count); count++; } B. int sum=0; while(sum<100) { sum+=10; } C. while('a') { printf("循环中"); } D. int i=0; do { i++; } while(i<5); 7、使用 while 语句求解 1+2+…+100 的和,循环条件应设置为( ) A. count<100 B. count<=100 C. sum<100 D. sum<=100 8、在 while 循环中,为了避免死循环,必须包含的语句是( ) A. break 语句 B. continue 语句 C. 使循环条件趋于结束的语句 D. return 语句 9、以下关于 do…while 语句的描述,正确的是( ) A. do…while 语句的循环体只能是单条语句 B. do…while 语句的循环条件可以是浮点型表达式 C. do…while 语句的循环体一定会执行至少两次 D. do…while 语句不需要循环条件 10、再次改进 “身高体型判定系统” 时,实现反复选择功能的核心是( ) A. 使用 if 语句嵌套 B. 使用 switch 语句多分支 C. 使用 while/do…while 循环结构 D. 使用函数调用 二、判断题 1、while 语句的循环体可能一次都不执行。( ) 2、do…while 语句的循环体至少会执行一次。( ) 3、while 循环中,当循环体包含多条语句时,不需要用大括号{}包裹。( ) 4、do…while 语句的结尾可以省略分号。( ) 3、 填空题 1、while 语句的执行流程是____,再决定是否执行循环体。 2、do…while 语句的核心特点是____,之后再判断循环条件。 3、当 while 或 do…while 循环的循环体包含多条语句时,必须用____将其包裹成复合语句。 4、求解 1+2+…+100 的和时,累加器sum的初始值应设为____。 5、为了避免 while 循环出现 “死循环”,循环体中必须包含____的语句。 四、程序填空题 1、题目描述:以下程序用于实现可反复使用的 “身高体型判定系统”,用户可多次选择功能,直到选择 “3. 退出系统” 才结束程序,请补充缺失代码。 #include <stdio.h> int main() { int choice; float father, mother, predict_h, weight, height, bmi; char gender; // 开启do-while循环,确保系统至少运行一次 _(1)_ printf("=== 身高体型判定系统 === "); printf("1. 身高预测功能 "); printf("2. 体型判定功能 "); printf("3. 退出系统 "); printf("请选择功能(1/2/3):"); scanf("%d", &choice); switch(choice) { case 1: printf("请输入父亲身高(cm):"); scanf("%f", &father); printf("请输入母亲身高(cm):"); scanf("%f", &mother); printf("请输入孩子性别(M/m表示男,F/f表示女):"); scanf(" %c", &gender); // 填写男孩身高预测公式 if(gender == 'M' || gender == 'm') { predict_h = _(2) _; } else if(gender == 'F' || gender == 'f') { predict_h = (father + 0.923 * mother) / 2; } else { printf("性别输入错误! "); break; } printf("孩子的预测身高为:%.2f cm ", predict_h); break; case 2: printf("请输入您的体重(kg):"); scanf("%f", &weight); printf("请输入您的身高(m):"); scanf("%f", &height); // 填写BMI指数计算公式 bmi = _(3) _; printf("您的BMI指数为:%.2f ", bmi); if(bmi < 18.5) { printf("体型:偏瘦,建议增加营养摄入。 "); } else if(bmi >= 18.5 && bmi < 24) { printf("体型:正常,建议保持当前饮食和运动习惯。 "); } else if(bmi < 28) { printf("体型:偏胖,建议控制饮食并增加运动。 "); } else { printf("体型:肥胖,建议咨询营养师制定减重计划。 "); } break; case 3: printf("感谢使用本系统,再见! "); break; default: printf("输入错误,请选择1/2/3! "); } printf("------------------------- "); // 设置do-while的循环条件,当未选择退出时继续循环 __(4)__ return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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