打鱼晒问题:三天打鱼,两天晒网
从2011年1月1日,输入任意一个年月日,判断这一天是在打鱼还是晒网
解析:
1.先求出距离2011.1.1有多少天,x
2. x%5<4则是在打渔,否则在晒网
#include <stdio.h> #include <stdbool.h> bool is_leap(int year); int days(int y,int m,int d); int main(void){ int year,month,day,n; printf("please enter the date you want to caculate,after 2011.1.1\n"); while(scanf("%d,%d,%d",&year,&month,&day)==3){ n=days(year,month,day); printf("there are %d days after 2011.1.1\n",n); if((n%5<4)&&(n%5>0)){ printf("the people is fishing on %d-%d-%d\n",year,month,day); }else printf("the people is shining the fish web on %d-%d-%d\n",year,month,day); } return 0; } bool is_leap(int year){ bool isleap=false; if((year%400==0)||(year%4==0&&year%100!=0)){ isleap=true; } return isleap; } int days(int y,int m,int d){ int leap[12]={31,29,31,30,31,30,31,31,30,31,30,31}; int common[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int sumdays=0; int i; if(is_leap(y)){ //判断是否是闰年 ,366天;平年365 for(i=1;i<m-1;i++){ sumdays+=leap[i]; } }else{ for(i=1;i<m-1;i++){ sumdays+=common[i]; } } sumdays+=d; return sumdays; }