【C刷题记录】三天打鱼两天晒网

题目:
中国有句俗语叫“三天打鱼两天晒网”,某人从1990年1月1日起开始“三天打鱼两天晒网”,即工作三天,然后再休息两天。问这个人在以后的某一天中是在工作还是在休息。从键盘任意输入一天,编程判断他是在工作还是在休息,如果是在工作,则输出:He is working,如果是在休息,则输出:He is having a rest,如果输入的年份小于1990或者输入的月份和日期不合法,则输出:Invalid input。

输入格式: “%4d-%2d-%2d”
输出格式: “Invalid input” 或 “He is having a rest” 或
“He is working”

输入样例1: 2014-12-22
输出样例1: He is working

输入样例2: 2014-12-24
输出样例2: He is having a rest

输入样例3: 2014-12-32
输出样例3: Invalid input

程序:

#include <stdio.h>
int Fun(int y,int m,int d);

int Fun(int y,int m,int d)
{
	int a=0,b=0,c=0,sum=0,n;
	int data[]={31,28,31,30,31,30,31,31,30,31,30,31};
	for(int i=1990;i<y;i++)
	{
		if((i%4==0&&i%100!=0)||i%400==0)
			n++;
	}
	if((y%4==0&&y%100!=0)||y%400==0)
		data[1]=29;
	a=(y-1990)*365+n;
	for(int i=1;i<m;i++)
	{
		b=b+data[i-1];
	}
	c=d;
	sum=a+b+c;
	if(sum%5==1||sum%5==2||sum%5==3)
		return 1;
	else
		return 0;
}

int main()
{
	int year,month,day,k;
	scanf("%4d-%2d-%2d",&year,&month,&day);
	if (year<1990||month<1||month>12||day<1||day>31)
		printf("Invalid input");
	else if (((year%4==0&&year%100!=0)||year%400==0)&&month==2&&day>29)
		printf("Invalid input");
	else if ((!(year%4==0&&year%100!=0)||year%400!=0)&&month==2&&day>28)
		printf("Invalid input");
	else
	{
		k=Fun(year,month,day);
		if (k==1)
			printf("He is working");
		else
			printf("He is having a rest");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值