三天打鱼两天晒网的代码

**中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言实现程序解决问题。
基本要求:
1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
2.输入数据的正确性验证。**
/******************************/

//工程名称:三天打鱼两天晒网
//创作人:刘嘉鹏
//创作时间:2017年3月10日

/******************************/
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
    int year,month,day,m;//m为判断闰年多的那一天
    int sum,work;
    int a,b,count;
    int flag=1;//循环判断

    printf("******欢迎进入打鱼晒网系统******\n\n\n");
    printf("请输入年-月-日(例如:2010-1-3):");

    while(flag)
    {
        scanf("%d-%d-%d",&year,&month,&day);
        if(year<2010)
        {
            printf("对不起,您输入日期有错。\n");
            printf("请重新输入:\n");
        }
        else
        {
            if(month>12)
            {
                printf("对不起,您输入日期有错。\n");
                printf("请重新输入:\n");
            }
            else
            {
                if(day>31||(day==30&&month==2&&(year%400==0||(year%4==0&&year%100!=0)))
                    ||(day==31&&month==2&&(year%400==0||(year%4==0&&year%100!=0)))
                    ||(day==29&&month==2&&(year%400!=0||(year%4!=0&&year%100!=0))))
                {
                    printf("对不起,您输入日期有错。\n");
                    printf("请重新输入:\n");
                }
                else
                {
                    flag=0;
                }
            }
        }
    }
    while(flag)
    {
        if(year>=2010)
        {
            if(year%400==0||(year%4==0&&year%100!=0)){      //判断当年是不是闰年,是为1,不是为0
            m=1;
            }
            else
            {m=0;}
            flag=0;
        }
        else
        {
            printf("对不起,您输入有错,只能输入2010以后的时间。\n");
            printf("请重新输入:\n");
        }
    }
    if(year>=2010)//判断当年之前有几个闰年和平年
    {
        a=(year-2010)/4;//判断有几个闰年
        b=(year-2010)%4;//4年一个单位后最后剩余的有几年
        count=a*366+(a*3+b)*365;//当年之前总共经历过多少天
    }

    switch(month)
    {
    case 1:sum=0;break;
    case 2:sum=31;break;
    case 3:sum=59;break;
    case 4:sum=90;break;
    case 5:sum=120;break;
    case 6:sum=151;break;
    case 7:sum=181;break;
    case 8:sum=212;break;
    case 9:sum=243;break;
    case 10:sum=273;break;
    case 11:sum=304;break;
    case 12:sum=334;break;
    default:printf("输入的月份有错\n");break;
    }
    sum+=day;
    if(month>2)
        sum+=m;         //判断这是一年中的第几天
    sum=sum+count;
    printf("共有%d天\n",sum);
    work=sum%5;
    switch(work)
    {
    case 1:
    case 2:
    case 3:printf("当天在打鱼\n");break;
    case 4:
    case 0:printf("当天在晒网\n");break;
    }

    getchar();
    system("pause");
    return 0;
}

附上我个人的流程思维图:
这里写图片描述
这里写图片描述
自己写的程序,还不是特别完美,但功能都还是实现了,对于程序的测试也只通过输入,还未进行文件测试。希望看到的人,可以提出宝贵的建议,共同学习。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值