中国有句俗话叫“三天大鱼,两天晒网”,某渔夫从2000年1月1日开始“三天打鱼,两天晒网”,问该渔夫在以后的某一天中是在“打鱼”还是在“晒网”

需求:

用户输入某年某月某日,判断出该日期是在打鱼还是在晒网

 

思路:

1、接收键盘输入的日期

2、计算从2000年1月1日到输入的日期一共是多少天

3、打鱼+晒网的周期为5天,所以可以将计算出的天数用5去除

4、根据余数判断渔夫的状态,余数为1、2、3表示在打鱼,其余则是晒网

 

代码实现:

int main(){
    int mdays[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    int year,month,days,totaldays=0;
    int i;
    printf("请输入要查询的年、月、日:");
    scanf("%d %d %d",&year,&month,&days);
    for(i=2000; i<year; i++){
        totaldays += leapyear(i);
    }
    for(i=0; i< month-1;i++){
        totaldays += mdays[i];
    }
    totaldays += days;
    if(leapyear(year)==366){
        totaldays ++;
    }
    i = totaldays%5;

    printf("%d\n",totaldays);
    if(i>=1 && i<=3){
        printf("渔夫在打鱼\n");
    }else{
        printf("渔夫在晒网\n");
    }


}

int leapyear(int year){
    int days=365;
    if((year%4==0 && year%100!=0) || year % 400 == 0)
        days = 366;
    return days;
}

 

更多推荐

“三天打鱼,两天晒网“的c语言实现