三天打渔两天晒网——判定

@TOC三天打渔两天晒网——判定(C语言)

#include<stdio.h>
int main(){
	printf("请依次输入年月日!注意年份要大于等于1970\n");
	int y,m,d,j,s=0;//j->Judge
loop:	scanf("%d%d%d",&y,&m,&d);
	if(y<1970||m>12||d>31){
		printf("输入错误!请重新输入!\n");
		goto loop;
	} 
	if((m<7&&m%2==0&&d>30)||(m>7&&m%2==1&&d>30)||(((y%4==0&&y%100!=0)||y%400==0)&&m==2&&d>29)||(!((y%4==0&&y%100!=0)||y%400==0)&&m==2&&d>28)){
		printf("输入错误!请重新输入!\n");
		goto loop;
	}
		switch(m){
			case 1:s=(y-1970)*365+(y-1972)+d;break;
			case 3:
			case 5:
			case 7:s=(y-1970)*365+(y-1972)+(m-1)/2+(m-1)*30+d-1;break;//(m-1)/2闰年月多出天数 
			case 2:
			case 4:
			case 6:s=(y-1970)*365+(y-1972)+m/2+(m-1)*30+d-1;break;
			case 8:
			case 10:
			case 12:s=(y-1970)*365+(y-1972)+213+(m-8)/2+(m-8)*30+d;break;
			case 9:
			case 11:s=(y-1970)*365+(y-1972)+244+(m-9)%2+(m-9)*30+d;break;
		}
		if(!((y%4==0&&y%100!=0)||y%400==0)){
			if(m>2)
			s-=1;
		}
		if(y==1971){
		     s=s+1;
	    } else if(y==1970){
	    	s=s+2;
		}
		if(s%5<4&&s%5>0){
			j=s/5*3+s%5; 
			printf("此日打鱼,已打鱼:%d天\n",j);	
		} else{
			if(s%5!=0){
			j=s/5*2;
			}else{
				j=s/5*2+2;
			}
			printf("此日晒网,晒网天数:%d\n",j);
		}
		return 0; 
} 

正确输入
错误输入时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值