中国有句俗话叫“三天大鱼,两天晒网”,某渔夫从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语言实现
发布评论