怎么改都是40分,不知道哪里错了,看出来的朋友能不能指教一下?
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int month_day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int begday[300];//存储某年的年末是星期几
bool leapyear(int year)//判断是否是闰年
{
if(year%4==0&&year%100!=0)
{
return true;
}
if(year%400==0)
{
return true;
}
return false;
}
int main() {
int month,week,day,year1,year2;
cin>>month>>week>>day>>year1>>year2;
int sum=0;
int id=0;
for(int i=1850;i<year2;i++)
{
if(leapyear(i))
{
sum+=366;
}
else
{
sum+=365;
}
if(i>=year1-1&&i<year2)
{
begday[id]=sum%7-1+2;
//printf("%d年年末是星期%d\n",i,begday[id]);
id++;
}
}
for(int i=year1;i<=year2;i++)
{
int b=begday[i-year1]+1;
//printf("%d年1月1日是星期%d\n",i,b);
int ss=0;
int j;
for(j=1;j<month;j++)
{
if(leapyear(i)&&j==2)
{
ss+=29;
month_day[2]=29;
}
else
{
ss+=month_day[j];
month_day[2]=28;
}
}
//int newss=(ss%7+b)%7;
//printf("%d年%d月1日是星期:%d\n",i,month,ss);
int counter=0;
for(j=1;j<=month_day[month];j++)
{
if(day==7)
{
if(((j+ss)%7+b-1)%7==0)
{
counter++;
if(counter==week)
{
printf("%d/%02d/%02d\n",i,month,j);
break;
}
}
}
else if(((j+ss)%7+b-1)%7==day)
{
counter++;
if(counter==week)
{
printf("%d/%02d/%02d\n",i,month,j);
break;
}
}
}
if(j>month_day[month])
{
printf("none\n");
}
}
return 0;
}