#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循环,然后有一点小错误是我的闰年天数多一天,但是最终还是及时发现了。然后还有日期的正确性判断,虽然不断的调试,完成了,但是觉得自己的程序还是有点复杂!通过这次作业,我的收获很大,也知道了自己的不足,发展自己的逻辑思考能力还是有些弱的,也没有使用文件。希望自己以后可以多多练习,弥补自己的不足。