三天打鱼两天晒网C语言代码

#include<stdio.h>

/*
 struct time s              //存放查询时间
 int number                 //存放总天数
 void count(struct time s)  //计算相差总天数
 void show()                //显示打鱼或者晒网
*/ 
struct time     //定义一个时间结构体
{
 int year;
 int month;
 int day;
}s;   

int number;       //保存天数
/*
   计算天数总和函数
   计算日期的方法:计算起始日期到查询日期所在年年末的天数总和,然后减去多算的天数
*/
void count(struct time s)
{
 int d,c;                          //用c表示相差多少年,用d表示闰年天数
 int hyear,hmonth,hday;            //保存起始时间,设定为2010年1月1日
 
 hyear = 2010;
 hmonth = 1;
 hday = 1;
 d = 0;
 c = 0;
 c = s.year-hyear+1;              //将查询事件所在年全年包含在内
 for(hyear;hyear<s.year;hyear++)  //判断闰年有多少天  
  if(((hyear%4 == 0)&&(hyear%100 != 0)) || (hyear%400 == 0) )
   d++;
 number = d*366+(c-d)*365;        //计算天数,去掉其实年和结束年
 number = number-(((12-s.month)/2+1)*31+(12-s.month)/2*30+(31-s.day));
  //用12减去起始月数,然后除以2,算出除日期所在月外天数为31天和30天的个数,算出天数,假定日期所在月都是31天
 if(s.month<=2)
 {
  if(s.month == 2&&((s.year%4 == 0)&&(s.year%100 != 0)) || (s.year%400 == 0))
  number++;      //如果是2月闰年,少算一天
  else if(s.month == 2)
  number += 2;   //如果是二月非闰年,少算两天
  else if(!((s.year%4 == 0)&&(s.year%100 != 0)) || (s.year%400 == 0))
  number ++;      //如果不是二月且不是闰年,少算一天
 }
 else if(s.month>2)
 {
  if(s.month < 8&&s.month%2 != 0)   //小于8月且月数为偶数就少算一天
  number--;
  else if(s.month == 12)   //如果当月是12月少算31天
  number = number+31;
 }  
}
//结果显示函数
void show()
{
 printf("距当前日期共有%d天\n",number);
 if(number%5<=3)
  printf("今天应该打鱼!");
 else
  printf("今天晒网!") ;
}

int main(void)
{
 int choose;
 choose = 1;
 do
 {
  printf("请分别输入终止年、月、日(形式如2010,2,1):\n");
  scanf("%d,%d,%d",&s.year,&s.month,&s.day);
  if((s.day<1||s.day>31)||(s.year<2010)||(s.month<1||s.month>12))//判定时间输入时间是否有效
     {
        printf("输入数据有误!!\n");
     }
  else
   choose = 0;
 }while(choose);
 printf("\n");
 count(s);
 show();
 return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值