内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元5的第22练,内容涵盖单元5“身高体型判定系统”完整版的5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版。
《C语言程序设计》(高教版第2版)一课一练 第22练
单元5 “身高体型判定系统”完整版
5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版
1、 单项选择题(本题共5小题)
1、关于斐波那契数列的递推逻辑,以下代码片段能正确生成数列前 40 项的是( )
A.
int f1=1, f2=1, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
B.
int f1=1, f2=0, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
C.
int f1=1, f2=1, f3;
for(int i=1; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
D.
int f1=1, f2=1, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 - f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
【答案】A
【解析】斐波那契数列前两项为 1、1,从第 3 项开始是前两项之和。选项 B 初始值 f2 为 0,不符合数列定义;选项 C 直接从第 3 项开始打印,遗漏前两项;选项 D 使用减法,递推逻辑错误;只有选项 A 的初始值、递推公式、循环范围均符合要求。
2、判断一个数 n 是否为素数时,优化后的循环范围通常是( )
A. i 从 2 到 n-1
B. i 从 2 到 n/2
C. i 从 2 到 sqrt (n)
D. i 从 1 到 n
【答案】C
【解析】若 n 有因子,则一定存在小于等于 sqrt (n) 的因子,因此循环到 sqrt (n) 即可完成判断,能大幅减少循环次数,提升效率;选项 A 是基础逻辑但效率低,选项 B 效率有所提升但不如选项 C 优化彻底,选项 D 包含 1 和 n 本身,无意义。
3、以下关于 “水仙花数” 的描述,正确的是( )
A. 指各位数字的平方和等于自身的两位数
B. 指各位数字的立方和等于自身的三位数
C. 指各位数字的和等于自身的四位数
D. 指各位数字的乘积等于自身的五位数
【答案】B
【解析】水仙花数的定义是三位数,其个位、十位、百位数字的立方和等于该数本身,例如 153=1³+5³+3³,选项 B 完全符合该定义。
4、用循环求 π 的近似值,终止条件为 “某一项的绝对值小于 10⁻⁸”,以下判断逻辑正确的是( )
A. while (fabs (term) >= 1e-8)
B. while (fabs (term) > 1e8)
C. while (term >= 1e-8)
D. while (term < 1e-8)
【答案】A
【解析】循环需在项的绝对值大于等于 10⁻⁸时继续执行;选项 B 的阈值错误,选项 C 未考虑负数项,选项 D 循环条件与要求相反。
5、李白打酒问题中,若按 “店、花、店、花、店、花” 的顺序,用还原法计算初始酒量,正确的表达式是( )
A. ((0+1)*2+1)2+1)/2
B. (((0+1)/2+1)/2+1)/2
C. ((02+1)*2+1)*2+1
D. (((0+1)*2+1)*2+1)*2
【答案】B
【解析】还原法需从最后一步倒推:最后见花喝光(0),则见花前酒量为 0+1=1;之前遇店加倍,遇店前酒量为 1/2;重复该逻辑三次,最终得到初始酒量为 (((0+1)/2+1)/2+1)/2。
2、 判断题(本题共4题)
1、判断素数时,循环范围从 2 到 n/2 和从 2 到 sqrt (n) 的结果完全一致,只是效率不同。( )
【答案】√
【解析】若 n 存在因子,必然有一个因子小于等于 sqrt (n),也必然小于等于 n/2(n≥2 时),因此两种范围都能正确判断素数,只是 sqrt (n) 的范围更小,效率更高。
2、斐波那契数列的第 1 项和第 2 项均为 1,从第 3 项开始每一项是前两项之和。( )
【答案】√
【解析】这是斐波那契数列的经典定义,对应兔子繁殖问题的规律:第 1、2 个月只有 1 对兔子,从第 3 个月开始每月的兔子数是前两个月之和。
3、水仙花数包含两位数和三位数,只要各位数字立方和等于自身即可。( )
【答案】×
【解析】水仙花数特指三位数,两位数中不存在满足 “各位数字立方和等于自身” 的数,因此题目描述错误。
4、用循环计算 π 的近似值时,每一项的符号与前一项相反,分母比前一项大 2。( )
【答案】√
【解析】根据 π 的近似计算公式,通项为 (-1)^(n+1)/(2n-1),因此符号交替变化,分母依次为 1、3、5… 每次增加 2,符合题目描述。
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于输出所有水仙花数,请补充缺失代码使程序正常运行。
#include <stdio.h>
int main() {
int n, a, b, c;
// 遍历所有三位数
for( (1)____; n<=999; n++ ) {
// 拆分百位数字
a = n / 100;
// 拆分十位数字
b = (2)____;
// 拆分个位数字
c = n % 10;
// 判断是否为水仙花数
if( (3)____ ) {
printf("%d
", n);
}
}
return 0;
}【答案】
(1) n=100
(2) (n/10)%10
(3) a*a*a + b*b*b + c*c*c == n
【解析】
(1) 水仙花数是三位数,因此循环变量 n 从 100 开始,遍历到 999,符合数据范围要求。
(2) 十位数字的拆分方法是先将 n 除以 10 取整(去掉个位),再对 10 取余,得到十位数字,(n/10)%10 是正确的拆分逻辑。
(3) 根据水仙花数的定义,判断各位数字的立方和是否等于原数,C 语言中立方运算应使用 变量*变量*变量 的形式,正确写法为 a*a*a + b*b*b + c*c*c == n(也可使用 pow(a,3) + pow(b,3) + pow(c,3) == n,但需包含 <math.h> 头文件)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元5的第22练,内容涵盖单元5“身高体型判定系统”完整版的5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版。
《C语言程序设计》(高教版第2版)一课一练 第22练
单元5 “身高体型判定系统”完整版
5.3、5.5 问题解决(循环经典案例)、身高体型判定系统完整版
1、 单项选择题(本题共5小题)
1、关于斐波那契数列的递推逻辑,以下代码片段能正确生成数列前 40 项的是( )
A.
int f1=1, f2=1, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
B.
int f1=1, f2=0, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
C.
int f1=1, f2=1, f3;
for(int i=1; i<=40; i++){
f3 = f1 + f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
D.
int f1=1, f2=1, f3;
printf("%d
%d
", f1, f2);
for(int i=3; i<=40; i++){
f3 = f1 - f2;
printf("%d
", f3);
f1 = f2;
f2 = f3;
}
2、判断一个数 n 是否为素数时,优化后的循环范围通常是( )
A. i 从 2 到 n-1
B. i 从 2 到 n/2
C. i 从 2 到 sqrt (n)
D. i 从 1 到 n
3、以下关于 “水仙花数” 的描述,正确的是( )
A. 指各位数字的平方和等于自身的两位数
B. 指各位数字的立方和等于自身的三位数
C. 指各位数字的和等于自身的四位数
D. 指各位数字的乘积等于自身的五位数
4、用循环求 π 的近似值,终止条件为 “某一项的绝对值小于 10⁻⁸”,以下判断逻辑正确的是( )
A. while (fabs (term) >= 1e-8)
B. while (fabs (term) > 1e8)
C. while (term >= 1e-8)
D. while (term < 1e-8)
5、李白打酒问题中,若按 “店、花、店、花、店、花” 的顺序,用还原法计算初始酒量,正确的表达式是( )
A. ((0+1)*2+1)2+1)/2
B. (((0+1)/2+1)/2+1)/2
C. ((02+1)*2+1)*2+1
D. (((0+1)*2+1)*2+1)*2
2、 判断题(本题共4题)
1、判断素数时,循环范围从 2 到 n/2 和从 2 到 sqrt (n) 的结果完全一致,只是效率不同。( )
2、斐波那契数列的第 1 项和第 2 项均为 1,从第 3 项开始每一项是前两项之和。( )
3、水仙花数包含两位数和三位数,只要各位数字立方和等于自身即可。( )
4、用循环计算 π 的近似值时,每一项的符号与前一项相反,分母比前一项大 2。( )
3、 程序填空题(本题共1题)
1、题目描述:以下程序用于输出所有水仙花数,请补充缺失代码使程序正常运行。
#include <stdio.h>
int main() {
int n, a, b, c;
// 遍历所有三位数
for( (1)____; n<=999; n++ ) {
// 拆分百位数字
a = n / 100;
// 拆分十位数字
b = (2)____;
// 拆分个位数字
c = n % 10;
// 判断是否为水仙花数
if( (3)____ ) {
printf("%d
", n);
}
}
return 0;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$