三天打鱼两天晒网



    中国有句俗语叫“三天打鱼两天晒网”。某人从201011日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

    问题的关键是计算从2010年1月1日起至某一天共有多少天,通过总天数除5取余来判断是打鱼还是晒网,我是用C++写的。

#include<iostream>
using namespace std;
class Date        //声明Date类
{
 private:
  int year;
  int month;
  int day;
 public:
  void print_date();     //输入要判断的日期
  int is_leap(int y);    //判断某一年是否为闰年
  int all_days();        //计算从2010年1月1日至输入的日期共有多少天
  void catch_sun();      //判断输入的这一天是打鱼还是晒网
};

void  Date::print_date()       //输入要判断的日期

 cout<<"请输入要判断的日期(2010年1月1日之后):"<<endl;
 cin>>year>>month>>day;
 cout<<endl;
}

int Date::is_leap(int y)       //判断某一年是否为闰年
{
 int leap;
 if(y%4==0&&y%100!=0||y%400==0)
  leap=1;               //lemp=1表示这一年是闰年
 else
  leap=0;
 return leap;
}

int Date::all_days()        //计算从2010至输入的日期共有多少天
{
 int m1,m2,m=0;
 int days;               //总天数
 int month_day1[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};     //闰年每个月的天数
 int month_day2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};     //平年每个月的天数
 for(int i=2010;i<year;i++)             //计算从2010年至输入年份的前一年的天数
 {
  if(is_leap(i)==1)
  {
   m1=366;
   m=m+m1;
  }
  else
  {
   m2=365;
   m=m+m2;
  }
 }
 days=m;
 if(is_leap(year)==1)
     for(int i=1;i<month;i++)
         days=days+month_day1[i];

 else
       for(int i=1;i<month;i++) 
   days=days+month_day2[i];
 days=days+day;     //总天数
 return days;
}

void Date::catch_sun()         //判断输入的这一天是打鱼还是晒网
{
 int q=all_days();
    cout<<"从2010年1月1日至"<<year<<"年"<<month<<"月"<<day<<"日"<<"共有"<<q<<"天"<<endl;
 if(q%5==0||q%5==4)
  cout<<"这一天在晒网";
 else
  cout<<"这一天在打鱼";
}

int main()
{
 Date date;         //定义对象date
 date.print_date();
 date.all_days();
 date.catch_sun();
 return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值