内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第16练,内容是4.6 循环结构程序设计实例。
《C语言》(第五版)一课一练 第16练
4.6 循环结构程序设计实例
一、单选题
1. 以下关于循环累加的叙述,正确的是( )
A. 累加变量在循环前应初始化为1
B. 累加操作应放在循环条件判断之前
C. 每次循环累加变量的增量固定不变
D. 累加变量在循环前应初始化为0
【答案】D
【解析】累加变量的作用是记录累加结果,初始值应为0,D选项正确。初始化为1会导致结果多1,A选项错误。累加操作在循环体内执行,B选项错误。增量可以变化,例如累加1、2、3等,C选项错误。
2. 以下关于累乘的叙述,正确的是( )
A. 累乘变量应初始化为0
B. 累乘变量应初始化为1
C. 累乘的结果一定大于累加的结果
D. 累乘不需要使用循环
【答案】B
【解析】累乘变量的初始值应为1,因为1乘以任何数等于该数本身,B选项正确。初始化为0会使结果永远为0,A选项错误。累乘和累加结果大小取决于具体数据,C选项错误。累乘需要循环来重复乘法运算,D选项错误。
3. 判断一个整数n是否为素数,循环变量i的取值范围通常是( )
A. 从2到n-1之间
B. 从1到n
C. 从1到n-1
D. 从0到n
【答案】A
【解析】素数是大于1的自然数,除了1和它本身没有其他因子。判断素数时需要检查2到n-1之间是否有因子,A选项正确。1不是素数的判断条件,不需要检查1。实际优化时可检查到根号n,因为如果n有大于根号n的因子,必然有小于根号n的因子与之配对。
4. 以下程序段的功能是求n的阶乘,划线处应填入
int i, n, f = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
______;( )
A. f = f + i
B. f = i * i
C. f = f * i
D. f = f / i
【答案】C
【解析】阶乘是1到n的连续整数相乘,f初始为1,每次乘以i即可,填f=f*i。f=f+i是累加不是累乘,不符合阶乘定义。f=i*i计算的是i的平方,不是阶乘。f=f/i是除法运算。所以应填f=f*i。
5. 以下代码的功能是判断n是否为素数,当n为素数时flag的值为
int n, i, flag = 1;
for (i = 2; i < n; i++)
if (n % i == 0) flag = 0;( )
A. flag的值为0
B. flag的值为n
C. flag的值不确定
D. flag的值为1
【答案】D
【解析】flag初始为1,表示假设n为素数。循环检查2到n-1是否有n的因子,如果有则flag置0。当n为素数时循环中不会执行flag=0,flag保持初始值1。所以n为素数时flag为1。
6. 设 int n=6, s=0, i; 执行以下代码后s的值是
for (i = 1; i < n; i++)
if (n % i == 0) s += i;( )
A. s的值为3
B. s的值为12
C. s的值为6
D. s的值为10
【答案】C
【解析】循环检查1到5中哪些是6的因子。6的因子有1、2、3(不包括6本身),累加结果为6。这个程序求的是n的除自身外所有因子之和,6是完美数,因子和等于自身。所以s的值为6。
7. 以下程序段执行后,输出结果是
int i, n = 28, s = 0;
for (i = 1; i < n; i++)
if (n % i == 0) s += i;
if (s == n) printf("完美数");
else printf("非完美数");( )
A. 完美数
B. 编译错误
C. 无输出
D. 非完美数
【答案】A
【解析】循环求28除自身外所有因子之和。28的因子有1、2、4、7、14,累加和为28。s等于n,判断为完美数。完美数是指除自身外所有因子之和等于本身的数,28是第二个完美数。
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int i, n = 5, f = 1;
for (i = 1; i <= n; i++)
f *= i;
printf("%d
", f);
return 0;
}
【答案】120
【解析】循环从i=1到i=5,每次将f乘以i。f依次变为1、2、6、24、120。最终f的值为120,即5的阶乘。这是求阶乘的标准程序。
三、案例分析题
9. 以下程序的功能是:判断输入的正整数n是否为素数。请填空。
#include <stdio.h>
int main()
{
int n, i, flag = 1;
scanf("%d", &n);
for (i = 【1】; i < n; i++)
if (【2】)
{ flag = 0; 【3】; }
if (flag) printf("素数
");
else printf("非素数
");
return 0;
}
【答案】【1】2
【2】n % i == 0
【3】break
【解析】判断素数从2开始检查因子,填2。判断i是否为n的因子用n%i==0,填n%i==0。找到因子后不需要继续检查,用break跳出循环,填break。flag初始为1,找到因子后置0表示非素数。
四、综合应用题
10. 编写一个C程序:输入两个正整数,使用辗转相除法求它们的最大公约数并输出。
【答案】#include <stdio.h>
int main()
{
int a, b, t;
scanf("%d%d", &a, &b);
while (b != 0)
{
t = a % b;
a = b;
b = t;
}
printf("%d
", a);
return 0;
}
【解析】使用辗转相除法求最大公约数。每次用a除以b取余数t,然后将b赋给a,t赋给b。当b为0时a即为最大公约数。例如求12和8的最大公约数:12%8=4,8%4=0,结果为4。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《C语言》(第五版)《一课一练》第16练,内容是4.6 循环结构程序设计实例。
《C语言》(第五版)一课一练 第16练
4.6 循环结构程序设计实例
一、单选题
1. 以下关于循环累加的叙述,正确的是( )
A. 累加变量在循环前应初始化为1
B. 累加操作应放在循环条件判断之前
C. 每次循环累加变量的增量固定不变
D. 累加变量在循环前应初始化为0
2. 以下关于累乘的叙述,正确的是( )
A. 累乘变量应初始化为0
B. 累乘变量应初始化为1
C. 累乘的结果一定大于累加的结果
D. 累乘不需要使用循环
3. 判断一个整数n是否为素数,循环变量i的取值范围通常是( )
A. 从2到n-1之间
B. 从1到n
C. 从1到n-1
D. 从0到n
4. 以下程序段的功能是求n的阶乘,划线处应填入
int i, n, f = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
______;( )
A. f = f + i
B. f = i * i
C. f = f * i
D. f = f / i
5. 以下代码的功能是判断n是否为素数,当n为素数时flag的值为
int n, i, flag = 1;
for (i = 2; i < n; i++)
if (n % i == 0) flag = 0;( )
A. flag的值为0
B. flag的值为n
C. flag的值不确定
D. flag的值为1
6. 设 int n=6, s=0, i; 执行以下代码后s的值是
for (i = 1; i < n; i++)
if (n % i == 0) s += i;( )
A. s的值为3
B. s的值为12
C. s的值为6
D. s的值为10
7. 以下程序段执行后,输出结果是
int i, n = 28, s = 0;
for (i = 1; i < n; i++)
if (n % i == 0) s += i;
if (s == n) printf("完美数");
else printf("非完美数");( )
A. 完美数
B. 编译错误
C. 无输出
D. 非完美数
二、简答题
8. 以下程序的运行结果是【 】。
#include <stdio.h>
int main()
{
int i, n = 5, f = 1;
for (i = 1; i <= n; i++)
f *= i;
printf("%d
", f);
return 0;
}
三、案例分析题
9. 以下程序的功能是:判断输入的正整数n是否为素数。请填空。
#include <stdio.h>
int main()
{
int n, i, flag = 1;
scanf("%d", &n);
for (i = 【1】; i < n; i++)
if (【2】)
{ flag = 0; 【3】; }
if (flag) printf("素数
");
else printf("非素数
");
return 0;
}
四、综合应用题
10. 编写一个C程序:输入两个正整数,使用辗转相除法求它们的最大公约数并输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$