【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;
        }
        else
            t=lmonth;
//判断是否闰年
        if(lyear%4==0||lyear%40==0||lyear%400==0) {
            if(t==2)
                t = 66;
            days=days+366*(lyear-2010);
        }
        else
            days=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);
                    else
                        System.out.printf("%d年%d月%d日他在晒网", lyear, lmonth, lday);
                }
                System.out.printf("\n此间共过去了%d天",days);
    }
}

四.结果分析

结果图

五.实验心得

暂无
.
.
==友情提醒==
.
.
.
敲码需认真,参考需理性
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值