C语言渔夫打鱼晒网问题
C语言 问题
2023-06-13 09:11:55 时间
如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。
实现过程:
(1) 自定义函数 leap(),用来判断输入的年份是否是闰年。
(2) 自定义函数 number(),用来计算输入日期距 2011 年 1 月 1 日共有多少天。
(3) main() 函数作为程序的入口函数,在 main() 函数中调用上面两个函数。程序代码如下:
#include stdio.h int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/ if (a%4==0 a%100!=0||a%400==0) /* 闰年判定条件 */ return 1; /*是闰年返回1*/ else return 0; /*不是闰年返回O*/ int number(int year,int month,int day) /*自定义函数 number() 计算输入日期距2011年1月1日共有多少天*/ int sum = 0, i, j, k; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; /*数组a存放平年每月的天数*/ int b[12]={31,29,31,30,31,30,31,31,30,31,30,31}; /*数组b存放闰年每月的天数*/ if(leap(year)==1) /*判断是否为闰年*/ for(i=0;i month-1;i++) sum+=b[i]; /*是闰年,累加数组b前m-1个月份的天数*/ else for(i=0;i month-1;i++) sum+=a[i]; /*不是闰年,累加数组a前m-1个月份的天数*/ for(j=2011;j year;j++) if (leap(j)==i) sum+=366; /*2011年到输入的年份是闰年的加366*/ else sum+=365; /*2011年到输入的年份不是闰年的加365*/ sum+=day; /*将前面累加的结果加上日期,求出总天数*/ return sum; /*返回计算的天数*/ int main() int year,month,day,n; printf( 请输入年月日/n scanf( %d%d%d , year, month, day); /*输入年月日*/ n=number(year,month,day); /*调用函数 number()*/ if((n%5) 4 (n%5) 0) /*余数是1或2或3时说明在打渔,否则在晒网*/ printf( %d:%d:%d 打鱼/n ,year,month,day); else printf( %d:%d:%d 晒网/n ,year,month,day); return 0; }运行结果:
请输入年月日
2011 1 4
2011:1:4 晒网
本实例主要有以下两个技术要点:
(1) 判断输入的年份(2011 年以后包括 2011 年)是否为闰年,这里自定义函数 leap() 来进行判断。该函数的核心内容就是闰年的判断条件即能被 4 整除但不能被 100 整除,或能被 400 整除。
(2) 求输入日期距 2011 年 1 月 1 日有多少天。首先判断 2011 年距输入的年份有多少年,这其中有多少年是闰年就将 sum 加多少个 366,有多少年是平年便将 sum 加上多少个 365。
其次要将 12 个月每月的天数存到数组中,因为闰年 2 月份的天数有别于平年,故采用两个数组 a 和 b 分别存储。若输入年份是平年,月份为 m 时就在前面累加日期的基础上继续累加存储着平年每月天数的数组的前 m-1 个元素,将累加结果加上输入的日期便求出了最终结果。闰年的算法类似。
21735.html
相关文章
- 【C语言】——背包问题详解「建议收藏」
- C语言教程学习14-18节
- 约瑟夫环问题 C语言
- 学习Linux与C语言,利用子进程提升编程能力(linuxc子进程)
- C语言三色旗问题
- const关键字及其作用(用法),C语言const详解
- C语言指针的运算
- C语言猴子吃桃问题
- Linux下使用C语言编写库函数(linuxc语言库)
- 解决C语言使用MySQL乱码问题(c 使用mysql 乱码)
- C语言如何在MySQL中正确显示汉字(c mysql显示汉字)
- C语言操作MySQL传参的注意事项(c mysql 传参)
- 读取Oracle表 从C语言中获取数据(c 读oracle 表)
- 使用 Oracle 客户端轻松解决C语言问题(c oracle 客户端)
- 基于C语言中段错误的问题详解
- C语言实现最大间隙问题实例