打鱼还是晒网

自然语言解题思路:该题可分为两部分,一部分为求出指定日期到1990年1月1日的总天数,而另一部分则是通过总天数求出应该为打鱼还是晒网。第二部分比较简单可通过除5求余得出应为打鱼还是晒网,而比较难的则是第一部分。应先求出指定日期年份是闰年还是平年,算出该年至指定日期的天数,再加上1990年到该年份前一年的天数,最终得出总天数。

流程图:

 

 

 

具体代码:

#include<stdio.h>
typedef struct date{
int year;
int month;
int day;
}DATE;
int countDay(DATE);
int runyear(int);
void main(){
DATE today; int totalDay; int result;
printf("please input 指定日期 包括年,月,日 如:1999 1 31\n");
scanf("%d%d%d",&today.year,&today.month,&today.day);
totalDay=countDay(today);
result=totalDay%5;
if(result>0&&result<4)
printf("今天打鱼");
else
printf("今天晒网");}
int runYear(int year)
{if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;}
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;}
if(runYear(currentDay.year))
perMonth[2]+=1;
for(i=0;i<currentDay.month;i++)
totalDay+=perMonth[i];
totalDay+=currentDay.day;
return totalDay;}

posted @ 2023-04-13 21:46  Mini-Q  阅读(19)  评论(0)    收藏  举报