【Java】三天打鱼两天晒网
【Java】三天打鱼两天晒网
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言等实现程序解决问题。
本作业待办(完成打勾✔):
程序分析
- 绘画流程图
- 代码实现
- 结果验证
- 友情提示
编程新手跳转学习Hello World!
示例输出:
输入一个年份
2011
输入一个月份
6
输入一个天
8
2011年6月8日他在打鱼
此间共过去了552天
示例输出:
输入一个年份
2009
输入错误
-----------------过度线-----------------
一.程序分析:
1.首先计算从2010年1月1日开始到用户的指定日期共有多少天,可以从年月日分别计算并累计。
2.由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数,如果大于5天用5去除。
3.根据余数判断他是在“打鱼”还是在“晒网”;若余数为1,2,3,则他是在“打鱼”否则 是在“晒网”。
在这三步中,关键是第一步。求从1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)
则该年是闰年否则该年就不是闰年。
二.流程图:

三.代码实现部分:
import java.io.*;
import java.util.Scanner;
public class prediction {public static void main(String[] args) {int year=2010,month=0,day=0;int t=0;int days=0;int lkf;
//年份System.out.println("输入一个年份");Scanner reader=new Scanner(System.in);int lyear=reader.nextInt();if(lyear<2010) {System.out.println("输入错误");return ;}
//月份System.out.println("输入一个月份");int lmonth=reader.nextInt();if(lmonth<0&&lmonth>12) {System.out.println("输入错误");return;}elset=lmonth;
//判断是否闰年if(lyear%4==0||lyear%40==0||lyear%400==0) {if(t==2)t = 66;days=days+366*(lyear-2010);}elsedays=days+365*(lyear-2010);switch(t){case 12:days+=30;case 11:days+=31;case 10:days+=30;case 9:days+=31;case 8:days+=31;case 7:days+=30;case 6:days+=31;case 5:days+=30;case 4:days+=31;case 3:days+=28;case 66:days+=29;case 2:days+=31;case 1:days+=0;}
//天System.out.println("输入一个天");int lday=reader.nextInt();days=days+lday-1;if(days<5) {if (days == 1 || days == 2 || days == 3)System.out.printf("%d年%d月%d日他在打鱼", lyear, lmonth, lday);}else {lkf = days % 5;if (lkf == 0 || lkf == 1 || lkf == 2)System.out.printf("%d年%d月%d日他在打鱼", lyear, lmonth, lday);elseSystem.out.printf("%d年%d月%d日他在晒网", lyear, lmonth, lday);}System.out.printf("\n此间共过去了%d天",days);}
}
四.结果分析

五.实验心得
暂无
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
