三天打鱼两天晒网

中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题

基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。

提高要求:1.输入数据的正确性验证2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。

源代码

#include<stdio.h>
int main()
{
    int year,month,data,i,x,days=0,t,sum=0;
    int flag=1;                                         //循环判断
    printf("请输入你所要查询的年、月、日:\n");         //输入所要查询的时间
    
        while(flag)
        {
            scanf("%d%d%d",&year,&month,&data);
            if(year<2010||month>12)
            {
                printf("您输入的日期有误,请重新输入: \n");
            }
            else
            {
                if((month==4||month==6||month==10)&&data>30)
                {
                    printf("您输入的日期有误,请重新输入: \n");
                }
                else
                {
                    if(month==2)
                    {
                        if(((year%4==0&&year%100!=0)||year%400==0)&&data>29)
                            printf("您输入的日期有误,请重新输入: \n");
                    
                        else if(((year%4!=0&&year%100==0)||year%400!=0)&&data>28)
                            printf("您输入的日期有误,请重新输入: \n");
                    }
                    else
                    {
                     flag=0;
                    }
                }
                }
        }        for(i=2010;i<year;i++)
             {
                 if((year%4==0&&year%100!=0)||year%400==0)
            
                   days+=366;
                   else
           
                   days+=365;
             }
            
         if((year%4==0&&year%100!=0)||year%400==0)
             x=29;
         else
             x=28;
         switch(month)
         {
             case 1:t=data;break;
               case 2:t=31+data;break;
             case 3:t=31+x+data;break;
             case 4:t=31+31+x+data;break;        
                case 5:t=31+x+31+30+data;break;
             case 6:t=31+x+31+30+31+data;break;
             case 7:t=31+x+31+30+31+30+data;break;
             case 8:t=31+x+31+30+31+30+31+data;break;
             case 9:t=31+x+31+30+31+30+31+31+data;break;
                case 10:t=31+x+31+30+31+30+31+31+30+data;break;
               case 11:t=31+x+31+30+31+30+31+31+30+31+data;break;
              case 12:t=31+x+31+30+31+30+31+31+30+31+30+data;break;
         }
         sum=days+t;
         printf("\n从2010年1月1日到%d年%d月%d日共经过了%d天\n\n",year,month,data,sum);
         {
            if(sum%5<=3)
                printf("%d年%d月%d日他在打鱼\n\n",year,month,data);
            else
             printf("%d年%d月%d日他在晒网\n\n",year,month,data);
        }
     return 0;
   运行结果

心得体会:

通过这次编程复习了一些C语言知识,编程在判断输入日期是否符合实际上一直出错,几个逻辑弄得自己有点晕头转向,刚开始写的循环结果跳不出去一直没有运行结果,提高要求没有完成,对文件存储和读取是个盲区,接下来要重新练习这个,编程还是需要自己动手操作,不动手实践永远不知道自己差在哪。以后一定要多多实践。我也会继续完善这个程序的。

 


  

      
           

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值