期末复习卷《C语言程序设计》(上海科学普及出版社)(三)

2026-06-14
| 2份
| 11页
| 8人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 数据类型和简单程序设计,分支结构,循环结构,数组,函数
使用场景 同步教学-期末
学年 2026-2027
地区(省份) 湖北省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 195 KB
发布时间 2026-06-14
更新时间 2026-06-14
作者 源栈
品牌系列 学易金卷·期末模拟卷
审核时间 2026-06-14
下载链接 https://m.zxxk.com/soft/58340301.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《C语言程序设计》 期末复习卷(三) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.函数fun的功能是:计算两个日期之间的天数差。日期格式为整型yyyymmdd。 例如,20240101和20240103相差2天。考虑闰年(能被4整除但不能被100整除, 或者能被400整除的年份为闰年) #include<stdio.h> int isLeap(int year){ return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } int daysInMonth(int year, int month){ int days[] = {31,28,31,30,31,30,31,31,30,31,30,31}; if(month == 2 && isLeap(year)) return 29; return days[month - 1]; } int fun(int date1, int date2){ int y1 = date1 / 10000, m1 = date1 / 100 % 100, d1 = date1 % 100; int y2 = date2 / 10000, m2 = date2 / 100 % 100, d2 = date2 % 100; int days = 0; /*******space*******/ /*******space*******/ return days; } int main(){ int d1 = 20240101, d2 = 20240110; printf("%d和%d相差%d天 ", d1, d2, fun(d1, d2)); return 0; } 2.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? #include<stdio.h> int fun(int n){ /*******space*******/ /*******space*******/ } void main(){ int i,n; scanf("%d",&n); for(i=1;i<=n;i++) printf("第%d月的兔子总数为%d对",i,fun(n)); } 3.蜗牛爬井问题,一口井深10米,一只蜗牛从井底白天向上爬3米,晚上下滑2米。问第几天能爬出井口? #include<stdio.h> void main(){ int h=10; int current=0,days=0; /*******space*******/ /*******space*******/ } 4.银行存款问题,某人存入银行1000元,年利率5%,按复利计算。问:多少年后存款会超过2000元? #include<stdio.h> void main(){ int year=0; float s=1000; /*******space*******/ /*******space*******/ } 5.韩信点兵,有一队士兵,3人一排多2人,5人一排多3人,7人一排多2人。编写程序问最少有多少士兵? #include <stdio.h> int main(){ int n = 1; /*******space*******/ /*******space*******/ return 0; } 6.爬楼梯问题一段楼梯有 n 级台阶,一次可以跨 1 级或 2 级。问:爬完 n级楼梯一共有多少种不同的方法? #include <stdio.h> int climb(int n){ /*******space*******/ /*******space*******/ } int main(){ int n; printf("输入台阶数:"); scanf("%d", &n); printf("共有 %d 种方法 ", climb(n)); return 0; } 7.约瑟夫环问题。n个人围成一圈,从第 1 个人开始报数,数到 m的人出列,再从下一个人继续报数。问:最后剩下的人的初始编号是多少? #include <stdio.h> int josephus(int n, int m){ /*******space*******/ /*******space*******/ } int main(){ int n, m; printf("输入人数n和报数m:"); scanf("%d %d", &n, &m); printf("最后剩下的人的编号是:%d ", josephus(n, m)); return 0; } 8.自守数问题。自守数:一个数的平方的末尾几位等于它本身。例如52=2552=25,252=625252=625。编写程序找出10000以内的所有自守数。 #include <stdio.h> int main(){ printf("10000以内的自守数: "); /*******space*******/ /*******space*******/ return 0; } 9.海边有一座灯塔,分为若干层。最上层有 1 盏灯,第二层有 3 盏,第三层有 5 盏,……每层比上一层多 2 盏。已知总灯数为 169 盏。问:灯塔有多少层? #include <stdio.h> int main(){ int total = 169, sum = 0, n = 0; /*******space*******/ /*******space*******/ printf("灯塔有 %d 层 ", n); return 0; } 10.一个农妇卖鸡蛋:第一次卖掉总数的一半加半个;第二次卖掉剩下的一半加半个;第三次又卖掉剩下的一半加半个,正好卖完。问:原来有多少个鸡蛋? #include <stdio.h> int main() { int eggs = 0; /*******space*******/ /*******space*******/ return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 《C语言程序设计》 期末复习卷(三) 时间:90分钟 总分:100分 班级 姓名 学号 成绩 一.程序设计题(本大题共10小题,每小题10分,共100分) 1.函数fun的功能是:计算两个日期之间的天数差。日期格式为整型yyyymmdd。 例如,20240101和20240103相差2天。考虑闰年(能被4整除但不能被100整除, 或者能被400整除的年份为闰年) #include<stdio.h> int isLeap(int year){ return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); } int daysInMonth(int year, int month){ int days[] = {31,28,31,30,31,30,31,31,30,31,30,31}; if(month == 2 && isLeap(year)) return 29; return days[month - 1]; } int fun(int date1, int date2){ int y1 = date1 / 10000, m1 = date1 / 100 % 100, d1 = date1 % 100; int y2 = date2 / 10000, m2 = date2 / 100 % 100, d2 = date2 % 100; int days = 0; /*******space*******/ if (y1>y2||(y1==y2&&m1>m2)||(y1==y2&&m1==m2&&d1>d2)){ int temp = date1; date1 = date2; date2 = temp; y1 = date1 / 10000; m1 = date1 / 100 % 100; d1 = date1 % 100; y2 = date2 / 10000; m2=date2/100 % 100; d2 = date2 % 100; } while(y1<y2||m1<m2||d1<d2){ days++; d1++; if (d1>daysInMonth(y1, m1)){ d1 = 1; m1++; if (m1 > 12) { m1 = 1; y1++; } } } /*******space*******/ return days; } int main(){ int d1 = 20240101, d2 = 20240110; printf("%d和%d相差%d天 ", d1, d2, fun(d1, d2)); return 0; } 2.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? #include<stdio.h> int fun(int n){ /*******space*******/ if (n == 1 || n == 2) return 1; int a = 1, b = 1, c; for (int i = 3; i <= n; i++){ c = a + b; a = b; b = c; } return b; /*******space*******/ } void main(){ int i,n; scanf("%d",&n); for(i=1;i<=n;i++) printf("第%d月的兔子总数为%d对",i,fun(n)); } 3.蜗牛爬井问题,一口井深10米,一只蜗牛从井底白天向上爬3米,晚上下滑2米。问第几天能爬出井口? #include<stdio.h> void main(){ int h=10; int current=0,days=0; /*******space*******/ while(current<h){ days++; current += 3; if(current >= h) break; current -= 2; } printf("第%d天爬出井口 ", days); /*******space*******/ } 4.银行存款问题,某人存入银行1000元,年利率5%,按复利计算。问:多少年后存款会超过2000元? #include<stdio.h> void main(){ int year=0; float s=1000; /*******space*******/ while(s<=2000){ s=s*1.05; year++; } printf("%d年后存款超过2000元,余额为%.2f ", year, s); /*******space*******/ } 5.韩信点兵,有一队士兵,3人一排多2人,5人一排多3人,7人一排多2人。编写程序问最少有多少士兵? #include <stdio.h> int main(){ int n = 1; /*******space*******/ while(1){ if(n%3==2&&n%5==3&&n%7==2){ printf("最少有 %d 名士兵 ", n); break; } n++; } /*******space*******/ return 0; } 6.爬楼梯问题一段楼梯有n级台阶,一次可以跨 1 级或 2 级。问:爬完n级楼梯一共有多少种不同的方法? #include <stdio.h> int climb(int n){ /*******space*******/ if (n == 1) return 1; if (n == 2) return 2; return climb(n - 1) + climb(n - 2); /*******space*******/ } int main(){ int n; printf("输入台阶数:"); scanf("%d", &n); printf("共有 %d 种方法 ", climb(n)); return 0; } 7.约瑟夫环问题。n个人围成一圈,从第 1 个人开始报数,数到 m的人出列,再从下一个人继续报数。问:最后剩下的人的初始编号是多少? #include <stdio.h> int josephus(int n, int m){ /*******space*******/ int last = 0; for (int i = 2; i <= n; i++) { last = (last + m) % i; } return last + 1; /*******space*******/ } int main(){ int n, m; printf("输入人数n和报数m:"); scanf("%d %d", &n, &m); printf("最后剩下的人的编号是:%d ", josephus(n, m)); return 0; } 8.自守数问题。自守数:一个数的平方的末尾几位等于它本身。例如5^2=25,25^2=6225。编写程序找出10000以内的所有自守数。 #include <stdio.h> int main(){ printf("10000以内的自守数: "); /*******space*******/ for(int i = 0; i < 10000; i++){ int square = i * i; int temp = i, mod = 1; while (temp){ mod *= 10; temp /= 10; } if (square % mod == i) printf("%d ", i); } printf(" "); /*******space*******/ return 0; } 9.海边有一座灯塔,分为若干层。最上层有 1 盏灯,第二层有 3 盏,第三层有 5 盏,……每层比上一层多 2 盏。已知总灯数为 169 盏。问:灯塔有多少层? #include <stdio.h> int main(){ int total = 169, sum = 0, n = 0; /*******space*******/ while(sum<total){ n++; sum += 2 * n - 1; } /*******space*******/ printf("灯塔有 %d 层 ", n); return 0; } 10.一个农妇卖鸡蛋:第一次卖掉总数的一半加半个;第二次卖掉剩下的一半加半个;第三次又卖掉剩下的一半加半个,正好卖完。问:原来有多少个鸡蛋? #include <stdio.h> int main() { int eggs = 0; /*******space*******/ for (int i=0;i<3;i++){ eggs = eggs * 2 + 1 ; } printf("原来有 %d 个鸡蛋 ", eggs); /*******space*******/ return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

期末复习卷《C语言程序设计》(上海科学普及出版社)(三)
1
期末复习卷《C语言程序设计》(上海科学普及出版社)(三)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。