内容正文:
身高体型判定系统完整版(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;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$