三天打鱼两天晒网

来源:互联网 发布:石家庄光耀网络 编辑:程序博客网 时间:2024/05/17 00:59
#include<iostream>#include <stdio.h>#include <stdlib.h>#include <fstream>using namespace std;class use{public:void write();void cal();void save();void judge();private:int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年每个月的天数 int b[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年每个月的天数 int x,y,z;//客户输入的年月日 int d;//记录客户输入日期距离2010年1月1日的天数int flag;//表示判断结果 };//客户录入日期至“in.txt”  void use::write(){FILE *fp;//创建一个可以指向文件的指针 fp=fopen("in.txt","w");//向文件”in.txt“中写入信息 cout<<"请输入年:";cin>>x;while(x<2010)//判断输入日期是否合理 {cout<<"输入日期不合理,请重新输入\n";cin>>x; }cout<<"请输入月:";cin>>y;while(y==0||y>12)//判断输入日期是否合理 {cout<<"输入日期不合理,请重新输入\n";cin>>y; }cout<<"请输入日:";cin>>z;if((x%4==0&&x%100!=0)||x%400==0)//判断输入日期是否合理 {if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)while(z=0||z>31){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }if(y==4||y==6||y==9||y==11)while(z=0||z>30){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }if(y==2)while(z=0||z>29){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }}else{if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)while(z=0||z>31){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }if(y==4||y==6||y==9||y==11)while(z=0||z>30){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }if(y==2)while(z=0||z>28){cout<<"输入日期不合理,请重新输入\n";    cin>>z; }}fprintf(fp,"\n%d %d %d",x,y,z);fclose(fp);}//计算天数void use::cal(){int i;for(i=2010;i<x;i++){if((i%4==0&&i%100!=0)||i%400==0)//判断i是闰年还是平年 {d+=366;}else{d+=365;}}for(i=1;i<y;i++){if((i%4==0&&i%100!=0)||i%400==0){d+=b[i];}else{d+=a[i];}}d+=z;}//判断当日是打鱼还是晒网 void use::judge(){if(d%5<=3&&d%5!=0){flag=1;}else{flag=0;}}//保存结果至“out.txt” void use::save(){ofstream myfile("out.txt",ios::out);//定义一个输出流对象myfile,就是可以向out.txt这个文件写数据if(flag)//判断今天是在做什么 {cout<<"今天在打鱼" ; myfile<<"今天在打鱼" ; //向文件”out.txt“输入内容 }else{cout<<"今天在晒网" ;myfile<<"今天在晒网" ;//向文件”out.txt“输入内容 } }int main(){use user;user.write();user.cal();user.judge();user.save(); return 0;}
    这个代码运行后操纵者输入当前的日期可得到在打鱼还是晒网。作为刚起步不久的学生,我的代码很繁杂,不够简洁,就比如检查数据异常返回重新输入的那段代码。还有我对文件的操作并不熟悉,可以说是刚接触,所以代码顺序很乱。如果有什么建议或能改进的地方希望能多多指点。


0 0