这本应该是一道很简单的题目,却还是出现了一些没必要的失误(写得时候认识到的一些问题也没有及时改正而又急于提交导致错误发生
切记:第一错误即使改正或标记
第二,当出现某些小错误要改正时,要全面考虑,以免吧正确的改错
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
int n,day=0,ans=0,i;
scanf("%d",&n);
for(i=1998;i<n;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
day+=366;
}
else
{
day+=365;
}
}
for(i=1;i<=12;i++)//务必要遍历到12才对
{
if(((day+13)%7+3)%7==5)
{
ans++;
}
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
day+=31;
}
else if(i==2&&((n%4==0&&n%100!=0)||n%400==0))//此处的n不要写成i
{
day+=29;
}
else if(i==2)
{
day+=28;
}
else
{
day+=30;
}
}
printf("%d\n",ans);
return 0;
}