三天打鱼两天晒网(c++)
来源:互联网 发布:c语言 购物车 编辑:程序博客网 时间:2024/06/06 15:54
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从2010年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为1,2,3,则他是在“打鱼”
否则他是在“晒网”
在这三步中,关键是第一步。求从1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)
则该年是闰年;
否则不是闰年。
#include<iostream>#include<fstream>using namespace std;class Time//时间类 用来定义年月日{ private: int year; int month; int day; public: Time(int,int,int); void set(); int judge(); void find();};//构造函数Time::Time(int y,int m,int d){ year=y; month=m; day=d;}//输入函数void Time::set(){ cin>>year>>month>>day;}//判断输入的值是否正确int Time::judge(){ int leag1,leag2,leag3,leag4,leag; if(year>=2010)//判断输入的年份 { leag1=0; } else { leag1=1; printf("输入的年份不对!年份要大于2010年!"); } if(month>=1 && month<=12)//判断输入的月份是否正确 leag2=0; else { leag2=1; printf("输入的月份不对!月份不会超过12月也不会小于1月!"); } //判断输入的日期是否在范围内 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { if(day>31) { leag4=1; printf("输入的日期不对!%d月不会超过31天!",month); } else leag4=0; } else if(month!=2) if(day>30) { leag4=1; printf("输入的日期不对!%d月不会超过30天!",month); } else leag4=0; else if(((year%4==0 && year%100!=0 )|| year%400==0))//当输入2月份时,平年与闰年天数不同,判断输入的数据是否正确 { if(day>29) { leag3=1;printf("输入的日期不对!闰年的二月不会超过29天!"); } else leag3=0; } else { if(day>28) { leag3=1; printf("输入的日期不对!平年的二月不会超过28天!"); } else leag3=0; } leag=leag1+leag2+leag3; if(leag==0) return 1; else { cout<<"数据有误,请输入有效数字"<<endl; cin>>year>>month>>day; } return 0;}//计算总天数并判断“打渔”还是“晒网”void Time::find(){ int day1=0;//年的天数 int day2=0;//月的天数 int day3=0;//日的天数 int Day=0; int i=year-2010; int k=month-1; int d; int monthday1[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int monthday2[12]={31,28,31,30,31,30,31,31,30,31,30,31}; for(int j=0;j<i;j++) { if(((2010+j)%4==0 && (2010+j)%100!=0 )|| (2010+j)%400==0)//判断是闰年还是平年(闰年+366天,平年+365天) day1+=366; else day1+=365; } for(int p=0;p<k;p++) { if((year%4==0 && year%100!=0 )|| year%400==0) day2+=monthday1[p];//如果是闰年,月份加第一个月份(2月29天) else day2+=monthday2[p];//如果是闰年,月份加第二个月份(2月28天) } day3=day; Day=day1+day2+day3;//计算总天数 d=Day%5;//总天数取余,余数为1,2,3打渔,为1,4晒网 if(d<=3 && d>=1) cout<<"此人打鱼"<<endl; else cout<<"此人晒网"<<endl;}//主函数int main(){ int i;//判断次数 cout<<"请输入需要判断的次数:"<<endl; cin>>i; for(int a=1;a<=i;a++) { cout<<"第"<<a<<"次判断:"<<endl; for(int j=0;j<a;j++ ) { cout<<"请输入年月日:年 月 日(起始时间2010年1月1日)(如2010 1 1)"<<endl; Time t1(0,0,0); t1.set();//输入 t1.judge();//判断 t1.find();//计算总天数 } } return 0;}
0 0
- 三天打鱼两天晒网(c++)
- 三天打鱼两天晒网(c++)
- 三天打鱼,两天晒网(C语言)
- 三天打鱼两天晒网(C语言)
- 三天打鱼两天晒网(C语言)
- 三天打鱼,两天晒网(c语言)
- 三天打鱼,两天晒网(c语言)
- 三天打鱼两天晒网(c语言)
- 三天打鱼两天晒网(C语言)
- 三天打鱼两天晒网(c语言)
- 三天打鱼,两天晒网程序(C语言/C++)
- C语言三天打鱼两天晒网
- 三天打鱼两天晒网c程序代码
- C语言-三天打鱼两天晒网
- C语言练习题---三天打鱼,两天晒网
- 三天打鱼两天晒网C语言代码
- 三天打鱼两天晒网C语言编程
- C语言制作“三天打鱼;两天晒网”
- Java内存模型
- Android学习之Bitmap对象与字节数组相互转换
- 递归--走楼梯
- 图解Elasticsearch中的_source、_all、store和index属性
- 单例模式使用场景
- 三天打鱼两天晒网(c++)
- 牛顿迭代法(Newton's Method)
- Button响应事件的4中方式
- Android图片压缩(质量压缩和尺寸压缩)&Bitmap转成字符串上传
- c++ primer 练习 2.32、2.33、2.34、2.35、2.36
- -webkit-line-clamp 多行文字溢出...
- Java双路快速排序算法
- secureCRT 8.0.2 mac 破解安装
- Storm学习00-Storm的配置文件各个选项及释义