《C语言程序设计》(四)循环结构程序设计 - 知识点训练卷 重庆市计算机类 考纲百套卷 第52卷

2024-08-09
| 2份
| 20页
| 115人阅读
| 2人下载

内容正文:

编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共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 不是水仙花数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

《C语言程序设计》(四)循环结构程序设计 - 知识点训练卷 重庆市计算机类 考纲百套卷 第52卷
1
《C语言程序设计》(四)循环结构程序设计 - 知识点训练卷 重庆市计算机类 考纲百套卷 第52卷
2
《C语言程序设计》(四)循环结构程序设计 - 知识点训练卷 重庆市计算机类 考纲百套卷 第52卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。