内容正文:
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第52卷,是知识点训练卷,按考纲中《C语言程序设计》---(四)循环结构程序设计的9-10要求编写。其两点要求是:9.了解循环结构程序的执行特点;10.掌握累加、累乘类,判断数的特性(质数、完数、水仙花数等) 程序的设计。
重庆市《计算机类考纲百套卷》 第52卷
C语言程序设计
(四)循环结构程序设计 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 在C语言中,用于实现循环结构的关键字有______、______和______。
2. 当循环条件为真时,______循环会重复执行循环体中的代码。
3. 在for循环中,初始化表达式、循环条件表达式和循环迭代表达式之间用______分隔。
4. 一个循环体内又包含另一个循环的循环结构称为______循环。
5. 以下是一个计算1到100累加和的for循环,请填空:sum = 0; for(i = 1; i <= 100; i++) { sum += ______; }。
6. 以下是一个判断一个数是否为质数的while循环,请填空:while(i <= n / i) { if(n % i == 0) { is_prime = ______; } }。
7. 跳出当前循环的语句是______。
8. 跳过本次循环,继续执行下一次循环的语句是______。
9. 一个数如果等于其各个位数上数字的立方和,则称为______数。
10. 一个数如果等于其所有因子(除了自身)之和,则称为______。
11. 计算阶乘的函数,请填空:long factorial(int n) { long result = 1; while(n > 1) { result *= ______; n--; } return result; }。
12. ______关键字用于声明无符号整型变量。
13. 这是判断一个数是否为偶数的if语句,请填空:if(n % ______ == 0) { printf("偶数"); }。
14. ______运算符用于求余数。
15. 以下是一个计算斐波那契数列的函数,请填空:int fibonacci(int n) { if(n == 0) return 0; if(n == 1) return 1; return fibonacci(n - 1) + ______; }。
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 在循环控制语句中,下面哪个选项可以终止当前循环并跳出循环体?( )
A. break
B. continue
C. return
D. exit
2. 在循环控制语句中,下面哪个选项可以跳过当前迭代,开始下一次循环迭代?( )
A. break
B. continue
C. return
D. exit
3. 在一个嵌套的循环结构中,break语句会影响哪个循环?( )
A. 内层循环
B. 外层循环
C. 所有循环
D. 不会影响任何循环
4. 在一个嵌套的循环结构中,continue语句会影响哪个循环?( )
A. 内层循环
B. 外层循环
C. 所有循环
D. 不会影响任何循环
5. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
printf("%d %d ", i, j);
}
}
A. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
C. 0 0 0 1 0 2 1 0 1 1 2 0 2 1 2 2
D. 0 0 0 1 0 2 1 0 1 1 2 0 2 1
6. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == j){
break;
}
printf("%d %d ", i, j);
}
}
A. 0 1 0 2 1 0 1 1 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
D. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
7. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i + j == 2){
continue;
}
printf("%d %d ", i, j);
}
}
A. 0 0 0 1 1 0 1 1 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
D. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
8. 以下哪个选项是用于在循环中计算累加和的语句?( )
A. +=
B. -=
C. /=
D. *=
9. 以下哪种循环语句可以无限循环?( )
A. for循环
B. while循环
C. do-while循环
D. 都可以无限循环
10. 当执行以下程序段时:
x=-1;
do {
x=x*x;
} while( !x);
以下哪个选项是正确的?( )
A. 循环体将执行一次
B. 循环体将执行两次
C. 循环体将执行无限次
D. 系统将提示有语法错误
11. 若输入字符串: abcde<回车>,则以下while循环体将执行多少次?( )
while((ch=getchar())!='e') printf("*");
A. 5
B. 4
C. 6
D. 1
12. 关于循环结构程序的执行特点,以下说法错误的是?( )
A. 循环结构可以重复执行一段代码
B. 循环结构必须包含循环条件
C. 循环结构中的代码一定会被执行至少一次
D. 循环结构可以嵌套使用
13. 以下哪个选项不是累加类程序的设计?( )
A. 计算从1加到100的和
B. 计算斐波那契数列的前10项之和
C. 判断一个数是否为质数
D. 计算一个数列的等差数列和
14. 关于累乘类程序的设计,以下说法正确的是?( )
A. 累乘程序只能使用for循环实现
B. 累乘程序可以用来计算阶乘
C. 累乘程序不能使用while循环实现
D. 累乘程序必须从1开始累乘
15. 以下哪个选项不是判断数的特性程序设计?( )
A. 判断一个数是否为质数
B. 判断一个数是否为完数
C. 判断一个数是否为水仙花数
D. 计算一个数列的等差数列和
三、判断题(本大题共6小题,每题2分,共12分)
1. for循环和while循环可以相互替代。( )
2. do-while循环至少会执行一次循环体。( )
3. 使用break语句可以立即结束当前循环。( )
4. continue语句可以用于跳过当前循环的剩余代码,并开始下一次循环。( )
5. 判断一个数是否为质数的程序设计中,只需要判断该数是否能被2到它的平方根之间的数整除。( )
6. 水仙花数是指一个n位数,它的各位数字的n次幂之和等于它本身。( )
四、程序填空题(本大题共2小题,每题8分,共16分)
1.编写一个C语言程序,计算并输出1到100之间所有偶数的累加和。请填空完成以下代码:
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
__________;
}
}
printf("1到100之间所有偶数的累加和为:%d
", sum);
return 0;
}
2.编写一个C语言程序,判断一个整数n是否为水仙花数。水仙花数是指一个n位数,它的各位数字的n次幂之和等于它本身。例如,153是一个3位数,且153 = 1^3 + 5^3 + 3^3。请填空完成以下代码:
#include <stdio.h>
#include <math.h>
int main() {
int n, originalNum, remainder, result = 0, nDigits = 0;
printf("请输入一个整数:");
scanf("%d", &n);
originalNum = n;
// 计算n的位数
while (originalNum != 0) {
originalNum /= 10;
++nDigits;
}
originalNum = n;
// 判断是否为水仙花数
while (originalNum != 0) {
remainder = _________;
result += pow(remainder, nDigits);
originalNum /= 10;
}
if (result == n) {
printf("%d 是水仙花数
", n);
} else {
printf("%d 不是水仙花数
", n);
}
return 0;
}
五、阅读程序题(本大题共12分)
1.阅读以下C语言程序,回答问题。
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int is_perfect_number(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}
int is_narcissistic_number(int n) {
int sum = 0, temp = n, digit = 0;
while (temp != 0) {
digit++;
temp /= 10;
}
temp = n;
while (temp != 0) {
sum += pow(temp % 10, digit);
temp /= 10;
}
return sum == n;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d 是质数。
", num);
} else {
printf("%d 不是质数。
", num);
}
if (is_perfect_number(num)) {
printf("%d 是完数。
", num);
} else {
printf("%d 不是完数。
", num);
}
if (is_narcissistic_number(num)) {
printf("%d 是水仙花数。
", num);
} else {
printf("%d 不是水仙花数。
", num);
}
return 0;
}
(1)请简述is_prime函数的功能。
(2)请简述is_perfect_number函数的功能。
(3)请简述is_narcissistic_number函数的功能。
(4)如果输入的数为28,程序将输出什么结果?
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第52卷,是知识点训练卷,按考纲中《C语言程序设计》---(四)循环结构程序设计的9-10要求编写。其两点要求是:9.了解循环结构程序的执行特点;10.掌握累加、累乘类,判断数的特性(质数、完数、水仙花数等) 程序的设计。
重庆市《计算机类考纲百套卷》 第52卷
C语言程序设计
(四)循环结构程序设计 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 在C语言中,用于实现循环结构的关键字有______、______和______。
【答案】for、while、do-while
2. 当循环条件为真时,______循环会重复执行循环体中的代码。
【答案】while
3. 在for循环中,初始化表达式、循环条件表达式和循环迭代表达式之间用______分隔。
【答案】逗号
4. 一个循环体内又包含另一个循环的循环结构称为______循环。
【答案】嵌套
5. 以下是一个计算1到100累加和的for循环,请填空:sum = 0; for(i = 1; i <= 100; i++) { sum += ______; }。
【答案】i
6. 以下是一个判断一个数是否为质数的while循环,请填空:while(i <= n / i) { if(n % i == 0) { is_prime = ______; } }。
【答案】0
7. 跳出当前循环的语句是______。
【答案】break
8. 跳过本次循环,继续执行下一次循环的语句是______。
【答案】continue
9. 一个数如果等于其各个位数上数字的立方和,则称为______数。
【答案】水仙花
10. 一个数如果等于其所有因子(除了自身)之和,则称为______。
【答案】完数
11. 计算阶乘的函数,请填空:long factorial(int n) { long result = 1; while(n > 1) { result *= ______; n--; } return result; }。
【答案】n
12. ______关键字用于声明无符号整型变量。
【答案】unsigned
13. 这是判断一个数是否为偶数的if语句,请填空:if(n % ______ == 0) { printf("偶数"); }。
【答案】2
14. ______运算符用于求余数。
【答案】%
15. 以下是一个计算斐波那契数列的函数,请填空:int fibonacci(int n) { if(n == 0) return 0; if(n == 1) return 1; return fibonacci(n - 1) + ______; }。
【答案】fibonacci(n - 2)
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 在循环控制语句中,下面哪个选项可以终止当前循环并跳出循环体?( )
A. break
B. continue
C. return
D. exit
【答案】A
2. 在循环控制语句中,下面哪个选项可以跳过当前迭代,开始下一次循环迭代?( )
A. break
B. continue
C. return
D. exit
【答案】B
3. 在一个嵌套的循环结构中,break语句会影响哪个循环?( )
A. 内层循环
B. 外层循环
C. 所有循环
D. 不会影响任何循环
【答案】A
4. 在一个嵌套的循环结构中,continue语句会影响哪个循环?( )
A. 内层循环
B. 外层循环
C. 所有循环
D. 不会影响任何循环
【答案】A
5. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
printf("%d %d ", i, j);
}
}
A. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
C. 0 0 0 1 0 2 1 0 1 1 2 0 2 1 2 2
D. 0 0 0 1 0 2 1 0 1 1 2 0 2 1
【答案】A
6. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i == j){
break;
}
printf("%d %d ", i, j);
}
}
A. 0 1 0 2 1 0 1 1 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
D. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
【答案】C
7. 下面代码段输出的结果是什么?( )
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if(i + j == 2){
continue;
}
printf("%d %d ", i, j);
}
}
A. 0 0 0 1 1 0 1 1 2 0 2 1 2 2
B. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2
C. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1
D. 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2
【答案】A
8. 以下哪个选项是用于在循环中计算累加和的语句?( )
A. +=
B. -=
C. /=
D. *=
【答案】A
9. 以下哪种循环语句可以无限循环?( )
A. for循环
B. while循环
C. do-while循环
D. 都可以无限循环
【答案】D
10. 当执行以下程序段时:
x=-1;
do {
x=x*x;
} while( !x);
以下哪个选项是正确的?( )
A. 循环体将执行一次
B. 循环体将执行两次
C. 循环体将执行无限次
D. 系统将提示有语法错误
【答案】A
11. 若输入字符串: abcde<回车>,则以下while循环体将执行多少次?( )
while((ch=getchar())!='e') printf("*");
A. 5
B. 4
C. 6
D. 1
【答案】B
12. 关于循环结构程序的执行特点,以下说法错误的是?( )
A. 循环结构可以重复执行一段代码
B. 循环结构必须包含循环条件
C. 循环结构中的代码一定会被执行至少一次
D. 循环结构可以嵌套使用
【答案】C
13. 以下哪个选项不是累加类程序的设计?( )
A. 计算从1加到100的和
B. 计算斐波那契数列的前10项之和
C. 判断一个数是否为质数
D. 计算一个数列的等差数列和
【答案】C
14. 关于累乘类程序的设计,以下说法正确的是?( )
A. 累乘程序只能使用for循环实现
B. 累乘程序可以用来计算阶乘
C. 累乘程序不能使用while循环实现
D. 累乘程序必须从1开始累乘
【答案】B
15. 以下哪个选项不是判断数的特性程序设计?( )
A. 判断一个数是否为质数
B. 判断一个数是否为完数
C. 判断一个数是否为水仙花数
D. 计算一个数列的等差数列和
【答案】D
三、判断题(本大题共6小题,每题2分,共12分)
1. for循环和while循环可以相互替代。( )
【答案】√
2. do-while循环至少会执行一次循环体。( )
【答案】√
3. 使用break语句可以立即结束当前循环。( )
【答案】√
4. continue语句可以用于跳过当前循环的剩余代码,并开始下一次循环。( )
【答案】√
5. 判断一个数是否为质数的程序设计中,只需要判断该数是否能被2到它的平方根之间的数整除。( )
【答案】√
6. 水仙花数是指一个n位数,它的各位数字的n次幂之和等于它本身。( )
【答案】√
四、程序填空题(本大题共2小题,每题8分,共16分)
1.编写一个C语言程序,计算并输出1到100之间所有偶数的累加和。请填空完成以下代码:
#include <stdio.h>
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 0) {
__________;
}
}
printf("1到100之间所有偶数的累加和为:%d
", sum);
return 0;
}
【答案】sum += i
2.编写一个C语言程序,判断一个整数n是否为水仙花数。水仙花数是指一个n位数,它的各位数字的n次幂之和等于它本身。例如,153是一个3位数,且153 = 1^3 + 5^3 + 3^3。请填空完成以下代码:
#include <stdio.h>
#include <math.h>
int main() {
int n, originalNum, remainder, result = 0, nDigits = 0;
printf("请输入一个整数:");
scanf("%d", &n);
originalNum = n;
// 计算n的位数
while (originalNum != 0) {
originalNum /= 10;
++nDigits;
}
originalNum = n;
// 判断是否为水仙花数
while (originalNum != 0) {
remainder = _________;
result += pow(remainder, nDigits);
originalNum /= 10;
}
if (result == n) {
printf("%d 是水仙花数
", n);
} else {
printf("%d 不是水仙花数
", n);
}
return 0;
}
【答案】originalNum % 10
五、阅读程序题(本大题共12分)
1.阅读以下C语言程序,回答问题。
#include <stdio.h>
int is_prime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
int is_perfect_number(int n) {
int sum = 0;
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
}
}
return sum == n;
}
int is_narcissistic_number(int n) {
int sum = 0, temp = n, digit = 0;
while (temp != 0) {
digit++;
temp /= 10;
}
temp = n;
while (temp != 0) {
sum += pow(temp % 10, digit);
temp /= 10;
}
return sum == n;
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
if (is_prime(num)) {
printf("%d 是质数。
", num);
} else {
printf("%d 不是质数。
", num);
}
if (is_perfect_number(num)) {
printf("%d 是完数。
", num);
} else {
printf("%d 不是完数。
", num);
}
if (is_narcissistic_number(num)) {
printf("%d 是水仙花数。
", num);
} else {
printf("%d 不是水仙花数。
", num);
}
return 0;
}
(1)请简述is_prime函数的功能。
(2)请简述is_perfect_number函数的功能。
(3)请简述is_narcissistic_number函数的功能。
(4)如果输入的数为28,程序将输出什么结果?
【答案】
(1)is_prime函数的功能是判断一个正整数是否为质数。如果是质数,返回1;否则返回0。
(2)is_perfect_number函数的功能是判断一个正整数是否为完数。如果是完数,返回1;否则返回0。
(3)is_narcissistic_number函数的功能是判断一个正整数是否为水仙花数。如果是水仙花数,返回1;否则返回0。
(4)如果输入的数为28,程序将输出以下结果:
请输入一个正整数:28
28 不是质数。
28 不是完数。
28 不是水仙花数。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$