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

#include<iostream>
#include<stdio.h>
using namespace std;
#define YEAR 2010
class DATA
{
private:
	int year;		//年份变量
	int month;		//月份变量
	int date;		//天数变量
public:
	int count;		//总天数
	void set();		//输入日期函数
	void isdateright();		//判断日期是否正确函数
	void sum();		//计算总的天数
	void result();		//输出结果函数	
}data;
void DATA::set()		//输入日期函数
{	cout<<"请输入日期!"<<endl;
	cin>>year>>month>>date;
	data.isdateright();		//调用判断函数
}
void DATA::isdateright()		//判断输入日期是否正确
{	int num[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((year%4==0&&year%100!=0)||year%400==0)
		num[2]+=1;	
	{
		if(year<YEAR||month<1||month>12||date>num[month])		//判断月份对应的天数是否正确
		{
			cout<<"输入日期有误,请重新输入!"<<endl;
			data.set();
		}
		else	
		{
			data.sum();		//正确就调用计算总天数函数
			data.result();		//以及最终结果输出函数
		}
	}
}
void DATA::sum()		//计算总的天数
{	int num[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
	if((year%4==0&&year%100!=0)||year%400==0)
	num[2]+=1;	
	int i,x;
	x=int((year-2009)/4)-int((year-2009)/100)+int((year-2009)/400);		//年份天数计算
	count=x*366+(year-2010-x)*365;
	for(i=1;i<month;++i)		//月份天数计算
	{	
			count+=num[i];
	}
	count+=date;
	cout<<"总共经历的天数:"<<count<<endl;
}
void DATA::result()		//输出最终结果
{	int day;
	int n;
	day=count%5;		//总数模5求余
	if(day==4||day==0)		//余数是4或者0是晒网否则为打渔
		cout<<"这天在晒网!"<<endl;
	else
		cout<<"这天在打渔!"<<endl;
	cout<<"输入0退出,否则继续!"<<endl;
	cin>>n;
	if(n==0)
		exit(0);
	else
		data.set();
}
int main()
{	
	data.set();		//输入日期函数
	return 0;
}

心得:

刚开始打开作业文件,由于没有思路看了老师给的分析思路。其实最主要的问题就是解决求出总共的天数,我的年份的天数想加没有用for循环,然后有一点小错误是我的闰年天数多一天,但是最终还是及时发现了。然后还有日期的正确性判断,虽然不断的调试,完成了,但是觉得自己的程序还是有点复杂!通过这次作业,我的收获很大,也知道了自己的不足,发展自己的逻辑思考能力还是有些弱的,也没有使用文件。希望自己以后可以多多练习,弥补自己的不足。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值