2025年4月7日 星期一 乙巳(蛇)年 正月初八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言打鱼还是晒网问题

时间:12-29来源:作者:点击数:69

问题描述

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

问题分析

根据题意可以将解题过程分为3步:

  1. 计算从1990年1月1日开始至指定日期共有多少天。
  2. 由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除。
  3. 根据余数判断他是在“打鱼”还是在“晒网”,若余数为1、2、3,则他是在“打鱼”,否则是在“晒网”。

算法设计

该算法为数值计算算法,要利用循环求出指定日期距1990年1月1日的天数,并考虑到循环过程中的闰年情况,闰年二月为29天,平年二月为28天。判断闰年的方法可以用伪语句描述如下:如果(能被4整除并且不能被100整除)或者(能被400整除)则该年是闰年;否则不是闰年。

判断是否为闰年流程图:

算法流程图:

下面是完整的代码:

  • #include<stdio.h>
  • /*定义日期结构体*/
  • typedef struct date {
  • int year;
  • int month;
  • int day;
  • }DATE;
  • int countDay(DATE currentDay); /*函数声明*/
  • int runYear(int year); /*函数声明*/
  • int main()
  • {
  • DATE today; /*指定日期*/
  • int totalDay; /*指定日期距离1990年1月1日的天数*/
  • int result; /*totalDay对5取余的结果*/
  • /*输入指定日期,包括年,月,日*/
  • printf("please input 指定日期 包括年,月,日 如:1999 1 31\n");
  • scanf("%d%d%d", &today.year, &today.month, &today.day);
  • totalDay=countDay(today); /*求出指定日期距离1990年1月1日的天数*/
  • /*天数%5,判断输出打鱼还是晒网*/
  • result=totalDay%5;
  • if(result>0 && result<4)
  • printf("今天打鱼");
  • else
  • printf("今天晒网");
  • return 0;
  • }
  • /*判断是否为闰年,是返回1,否返回0*/
  • int runYear(int year)
  • {
  • if( (year%4==0 && year%100!=0) || (year%400==0) ) /*是闰年*/
  • return 1;
  • else
  • return 0;
  • }
  • /*计算指定日期距离1990年1月1日的天数*/
  • int countDay(DATE currentDay)
  • {
  • int perMonth[13]={0,31,28,31,30,31,30,31,31,30,31,30}; /*每月天数数组*/
  • int totalDay=0,year,i;
  • /*求出指定日期之前的每一年的天数累加和*/
  • for(year=1990; year<currentDay.year; year++)
  • {
  • if(runYear(year)) /*判断是否为闰年*/
  • totalDay=totalDay+366;
  • else
  • totalDay=totalDay+365;
  • }
  • /*如果为闰年,则二月份为29天*/
  • if(runYear(currentDay.year))
  • perMonth[2]+=1;
  • /*将本年内的天数累加到totalDay中*/
  • for(i=0; i<currentDay.month; i++)
  • totalDay+=perMonth[i];
  • /*将本月内的天数累加到totalDay中*/
  • totalDay+=currentDay.day;
  • /*返回totalDay*/
  • return totalDay;
  • }

运行结果:

please input 指定日期 包括年,月,日 如:1999 1 31

2017 3 14↙

今天晒网

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门