一、问题描述
一个渔夫从1990年1月1日起开始“三天打鱼两天晒网”,问这人在以后的某一天是打鱼还是晒网
二、设计思路:
1:要求出总天数;
2:考虑到闰年和平年的二月天数不同;
3:打鱼还是晒网主要是找一个周期,明显为5,对5求余找余数;
三、程序流程图
四、代码实现
#include<stdio.h>
typedef struct date//定义一个时间类的结构体
{
int year;
int month;
int day;
}Date;
int runYear(int b)//写一个判断润年的函数
{
if((b%400==0)||(b%100!=0&&b%4==0))
{
return 1;//是闰年则返回真值1
}
else return 0;//不是闰年则返回0
}
int coutday(Date a)//写一个计算总天数的函数
{
int permonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};//初始化当闰年时候的月份天数
//特意设置13个的长度,为了将数组名月月份相对应
int year;//定义一个年份中间变量
int i;
int totalday=0;//定义并初始化总天数
for(year=1990;year<a.year;year++)//利用年份的循环求出指定年份与1990年的天数累加和
{
if(runYear(year))//条件判断,当该年为闰年
{
totalday=totalday+366;//则总天数加上366天
}
else totalday=totalday+365;//否则总天数加上365天
}
if(runYear(a.year))//这里做到了修改二月的天数,如果为闰年,则2月份为29天
{
permonth[2]++;
}
for(i=0;i<a.month;i++)//把指定日期前的月份加起来,指定日期所在月份不足一个月,不能加,跳出循环
{
totalday+=permonth[i];
}
totalday+=a.
typedef struct date//定义一个时间类的结构体
{
int year;
int month;
int day;
}Date;
int runYear(int b)//写一个判断润年的函数
{
if((b%400==0)||(b%100!=0&&b%4==0))
{
return 1;//是闰年则返回真值1
}
else return 0;//不是闰年则返回0
}
int coutday(Date a)//写一个计算总天数的函数
{
int permonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};//初始化当闰年时候的月份天数
//特意设置13个的长度,为了将数组名月月份相对应
int year;//定义一个年份中间变量
int i;
int totalday=0;//定义并初始化总天数
for(year=1990;year<a.year;year++)//利用年份的循环求出指定年份与1990年的天数累加和
{
if(runYear(year))//条件判断,当该年为闰年
{
totalday=totalday+366;//则总天数加上366天
}
else totalday=totalday+365;//否则总天数加上365天
}
if(runYear(a.year))//这里做到了修改二月的天数,如果为闰年,则2月份为29天
{
permonth[2]++;
}
for(i=0;i<a.month;i++)//把指定日期前的月份加起来,指定日期所在月份不足一个月,不能加,跳出循环
{
totalday+=permonth[i];
}
totalday+=a.