设计题目:中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中 是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
设计思路:1.先设定好起始的年月日,将平年和闰年的各月天数存入两个数组中,。
2.输入要查询的年月日,首先判断输入的年月日是否有误,若有误则报错,无误则继续进行。
3.判断起始年到查询年之间的年份是平年还是闰年,若为平年则加365,闰年加366。
4.判断查询年是平年还是闰年(此操作是为了考虑2月份的天数),则添加从起始月到查询月之间月份的天数,再添加 查询日的天数
5.将年月日天数的总和除以5取余,若为1,2,3则为打鱼,其余则为晒网。
设计流程图:
设计代码:
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int year=2010,month=1,day=1; //规定年、月、日
int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; //将平年各个月份天数存入数组
int b[]={31,29,31,30,31,30,31,31,30,31,30,31}; //将闰年各个月份天数存入数组
int i,m,c=0;
int year1,month1,day1;
cout<<"请输入年月日"<<endl;
cin>>year1;
cin>>month1;
cin>>day1;
if(month1>12 || day1>31)
{
cout<<"输入的月份或日期有误"<<endl;
}
else
{
for(m=year;m<year1;m++)
{
if(year%400==0 || (year%4==0 && year%100!=0)) //判断从2010年到指定年份中间的年份是否为闰年
{
c+=366; //闰年添加天数
}
else
{
c+=365; //平年添加天数
}
}
if(year1%400==0 || (year1%4==0 && year1%100!=0)) //判断输入的年份是否为闰年,若是则通过月日判断2月份应增加的天数
{
for(i=0;i<month1-1;i++)
{
c+=b[i]; //2月份为29天
}
c+=day1; //加上剩余的天数
}
else
{
for(i=0;i<month1-1;i++)
{
c+=a[i]; //2月份为28天
}
c+=day1; //加上剩余的天数
}
if(c%5==1 || c%5==2 || c%5==3) //判断得到的数字除以5后的余数,若为1,2,3,则为打鱼,其余为晒网
{
cout<<"fishing"<<endl; //输出打渔
}
else
{
cout<<"relaxing"<<endl; //输出晒网
}
return 0;
}
}
调试结果:
总结:此代码不是太复杂。没有定义其余类,只运用到了for循环以及if语句完成了代码,不是太难懂,仅仅是个人的想法。