这是题目
然后是我的代码
#include <stdio.h>
int main()
{
int year,month,day,i,m,w,l,k;//l判断闰年与否,闰年为1,平年为2
//k为加上某年到2000年总天数
//w为总天数对5取余的余数
//i为输入的年份
//m为月份
int n=0,sum=0;//n为输入年的天数
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
scanf("%d/%d/%d",&year,&month,&day);
for(i=year;i>=2000;i--)
{
if((i%4==0&&i&&100!=0)||year%400==0)
l=1;
else
l=2;
if(l==1)
{
a[1]=29;
if(i==year)
{
for(m=1;m<month;m++)
{
if((i!=2000)&&(m!=1))
n+=a[m-1];
}
n+=day;
sum+=n;
}
if(i!=year)
{
sum+=366;
}
}
else if(l==2)
{
a[1]=28;
if(i==year)
{
for(m=1;m<month;m++)
{
n+=a[m-1];
}
n+=day;
sum+=n;
}
if(i!=year)
{
sum+=365;
}
}
}
w=sum%5;
if(w>=1&&w<=3)
printf("fishing");
else if(w==4||w==0)
printf("sleeping");
return 0;
}
运行结果是这
结果应该是fishing的,不知道哪里算法错了
可以在我的基础上改一下吗,谢谢各位
修改如下,供参考:
#include <stdio.h>
int main()
{
int year,month,day,i,m,w,l,k;//l判断闰年与否,闰年为1,平年为2
//k为加上某年到2000年总天数
//w为总天数对5取余的余数
//i为输入的年份
//m为月份
int n=0,sum=0;//n为输入年的天数
int a[12]={31,0,31,30,31,30,31,31,30,31,30,31};
scanf("%d/%d/%d",&year,&month,&day);
for(i=year;i>=2000;i--)
{
if((i%4==0 && i%100!=0) || (i%400==0))
//((i%4==0&&i&&100!=0)||year%400==0) 修改
l=1;
else
l=2;
if(l==1)
{
a[1]=29;
if(i==year)
{
for(m=1;m<month;m++)
{
//if((i!=2000)&&(m!=1)) 修改
n+=a[m-1];
}
n+=day;
sum+=n;
}
if(i!=year)
{
sum+=366;
}
}
else if(l==2)
{
a[1]=28;
if(i==year)
{
for(m=1;m<month;m++)
{
n+=a[m-1];
}
n+=day;
sum+=n;
}
if(i!=year)
{
sum+=365;
}
}
}
w=sum%5;
if(w>=1&&w<=3)
printf("fishing");
else if(w==4||w==0)
printf("sleeping");
return 0;
}
#include<stdio.h>
/*兔子骑士叫旺仔原创*/
main()
{
/*year:年份 month:月份 day:号 time:时间跨度 */
int year, month, day, time, i;
/*每月的天数*/
int each_month[12] = {31, 29, 31, 30, 31, 30 ,31, 31, 30, 31, 30, 31};
scanf("%d-%d-%d", &year, &month, &day);
time = 0;
/*整年计算天数*/
for(i = 1990; i < year; i++)
{
if((i % 400 == 0) || (i % 4 == 0) && (i % 100 != 0))
{
time += 366;
}
else
{
time += 365;
}
}
/*判断闰年,闰年2月有29天,每月的天数不做更改*/
if((year % 400 == 0) || (year % 4 == 0) && (year % 100 != 0))
{
/*月份大于2月,依次加上每个月的天数*/
if(month > 2)
{
for(i = 0; i < (month - 1) ; i++)
{
time += each_month[i];
}
/*加上几号*/
time += day;
}
/*月份小于2月,就只有1月,直接加上几号即可*/
else if(month < 2)
{
time += day;
}
/*正好2月,加上1月份的31天和2月份的号数*/
else
{
time = time + 31 + day;
}
}
/*平年情况*/
else
{
/*更改平年2月份天数为28天*/
each_month[1] = 28;
/*同闰年部分*/
if(month > 2)
{
for(i = 0; i < (month - 1) ; i++)
{
time += each_month[i];
}
time += day;
}
else if(month < 2)
{
time += day;
}
else
{
time = time + 31 + day;
}
}
/*判断处于打鱼日还是晒网日*/
if(0 < (time % 5) && (time % 5) < 4)
printf("他在打鱼");
else
printf("他在晒网");
}