077.打鱼还是晒网

举报
C语言与CPP编程 发表于 2022/05/02 00:42:25 2022/05/02
【摘要】 #include<stdio.h>struct date{ int year; int month; int day;};int days(struct date day); void main(){ struct date today,term; int yearday,year,day; ...

      #include<stdio.h>
      struct date{
         int year;
         int month;
         int day;
      };
      int days(struct date day);
      void main()
      {
         struct date today,term;
         int yearday,year,day;
     	puts("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇");
     	puts("◇ 打鱼还是晒网 ◇");
     	puts("◇ 中国有句俗语叫【三天打鱼两天晒网】。 ◇");
     	puts("◇某人20岁从1990年1月1日起开始【三天打鱼两天晒网】,◇");
     	puts("◇问这个人在以后的某一天中是【打鱼】还是【晒网】? ◇");
     	puts("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n");
     	while(1)
      	{
     		printf(" >> 请输入年/月/日【输入1990 1 1 退出】:");
     		scanf("%d%d%d",&today.year,&today.month,&today.day);  /*输入日期*/
     		if(today.year<1990)
      		{
     			if(today.year<1970)
     				puts(" >> 对不起,那一年那还没出生呢!按任意键继续...");
     			else
     				puts(" >> 对不起,那一年他还没开始打鱼呢!按任意键继续...");
     			getch();
     			continue;
      		}
     		if(today.year==1990&&today.month==1&&today.day==1)
     			break;
      		term.month=12;               /*设置变量的初始值:月*/
      		term.day=31;                 /*设置变量的初始值:日*/
     		for(yearday=0,year=1990;year<today.year;year++)
      		{
      			term.year=year;
      			yearday+=days(term);     /*计算从1990年至指定年的前一年共有多少天*/
      		}
      		yearday+=days(today);       /*加上指定年中到指定日期的天数*/
      		day=yearday%5;               /*求余数*/
     		if(day>0&&day<4) printf(" >> %d年%d月%d日,他正在打鱼。\n",today.year,today.month,today.day);   /*打印结果*/
     		else printf(" >> %d年%d月%d日,他正在晒网。\n",today.year,today.month,today.day);
      	}
     	puts("\n >> 请按任意键退出...");
     	getch();
      }
      int days(struct date day)
      {
         static int day_tab[2][13]=
                  {{0,31,28,31,30,31,30,31,31,30,31,30,31,},      /*平均每月的天数*/
                   {0,31,29,31,30,31,30,31,31,30,31,30,31,},
          };
         int i,lp;
          lp=day.year%4==0&&day.year%100!=0||day.year%400==0;
           /*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
         for(i=1;i<day.month;i++)            /*计算本年中自1月1日起的天数*/
              day.day+=day_tab[lp][i];
         return day.day;
      }
  
 

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124518495

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。