三天打鱼两天晒网
2019-08-19 本文已影响0人
1墨家巨子
题目:
中国有句俗语叫“三天打鱼两天晒网”。
某人从1990年1月1日起开始“三天打鱼两天晒网”。
问这个人在以后的某一天中是“打鱼”还是“晒网”?
解题思路:
年:year 月:month 日:day
天数=(year-1990-1)闰年年数*366+非闰年年数*365+当前year已过的天数。
总天数除以5,若余数为1,2,3则为打鱼;0,4其余为晒网。
code:
int demo4 (void){
int sum=0;
int i;
int c1=0,c2=0;
int year=0,month=0,day=0;
printf("请输入1990年1月1日起以后任意一个日期");
scanf("%d %d %d",&year,&month,&day);
int m1[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int m2[]={0,31,29,31,30,31,30,31,31,30,31,30,31};
if(year>=1990&&month<=12&&day<=31){
for(i=year;i>1990;i--){
if(year%400==0||((year%4==0)&&(year%100!=0))){
c1++;//记录已过闰年数
}
else c2++;//记录已过非闰年数
}
if(year%400==0||((year%4==0)&&(year%100!=0)))
{//当前年是闰年
sum=c1*366+c2*365;
for(i=0;i<month;i++){
sum+=m2[i];
}
sum+=day;
}
else{//当前年不是闰年
sum=c1*366+c2*365;
for(i=0;i<month;i++){
sum+=m1[i];
}
sum=sum+day;
}
switch (sum%5){
case 0:printf("他在晒网"); break;
case 1:printf("他在打鱼"); break;
case 2:printf("他在打鱼"); break;
case 3:printf("他在打鱼"); break;
case 4:printf("他在晒网"); break;
default:printf("err"); break;
}
}
else printf("请输入大于1990年的年份或正确年月");
return 0;
}
fish.c
typedef struct date{
int year;
int month;
int day;
}mydate;
int isLeapYear(mydate d){
if(d.year%4==0&&d.year%100!=0||d.year%400==0)
return 1;
else
return 0;
}
int getdays(mydate d){
int sum=0;
int i;
int c1=0,c2=0;
int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(d.year>=1990&&d.month<=12&&d.day<=31){
for(i=d.year;i>1990;i--){
if(isLeapYear(d)){
c1++;//记录闰年数
}
else c2++;//记录非闰年数
}
if(isLeapYear(d))
{//当前年是闰年
m[2]=29;
sum=c1*366+c2*365;
for(i=0;i<d.month;i++){
sum+=m[i];
}
sum+=d.day;
}//当前年不是闰年
else{
sum=c1*366+c2*365;
for(i=0;i<d.month;i++){
sum+=m[i];
}
sum+=d.day;
}
}
return sum;
}
void text(void){
while (1) {
mydate d={1990,1,1};
printf("请输入1990年1月1日以后任意一个日期\n");
scanf("%d %d %d",&d.year,&d.month,&d.day);
if(d.year==0){
break;
}
else
continue;
if(d.year<1990||d.month>12||d.day>31||d.month<=0||d.day<=0){
printf("请输入大于1990的年份或正确日期\n");
}
else{
int sum=0;
sum=getdays(d);
switch (sum%5){
case 0:printf("他在晒网\n"); break;
case 1:printf("他在打鱼\n"); break;
case 2:printf("他在打鱼\n"); break;
case 3:printf("他在打鱼\n"); break;
case 4:printf("他在晒网\n"); break;
default:printf("err"); break;}
}
}
}