//在这里给出函数被调用进行测试的例子:
#include <iostream>
#include <string>
using namespace std;
string week[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
struct Calendar{
int year;
int month;
int day;
int weekday;//注:星期天为0,星期一为1,...,星期六为6;01-1-1为星期四
int fromInitDays();
void setValue(int y,int m,int d);
void show();
};
int main()
{
Calendar birthday;
int y,m,d;
cin>>y>>m>>d;
birthday.setValue(y,m,d);
cout<<birthday.fromInitDays()<<endl;
birthday.show();
return 0;
}
int Calendar::fromInitDays()
{
int sum=0,i,j;
for(i=1;i<year;i++){
if((i%4==0&&i%100!=0)||(i%400==0))
sum+=366;
else sum+=365;
}
for(j=1;j<month;j++){
if(j==2){
if((year%4==0&&year%100!=0)||(year%400==0))
sum+=29;
else sum+=28;
}
else if(j==1||j==3||j==5||j==8||j==10||j==12||i==7)
{
sum+=31;
}
else {
sum+=30;
}
}
sum+=day-1;
if(sum>577724){
sum=sum-10;
}
weekday=(sum+4)%7;
return sum;
}
void Calendar::setValue(int xx,int yy,int zz)
{
//cout<<this->fromInitDays() <<endl;
if(xx<1) year=1;
else year=xx;
if(yy<1) month=1;
else if(yy>12) month=12;
else month=yy;
if(zz<1) day=1;
else if(zz>31) day=31;
else day=zz;
//cout<<year<<month<<day<<endl;
}
void Calendar::show()
{
cout<<year<<"-"<<month<<"-"<<day<<":"<<week[weekday]<<endl;
}
请问这个哪错了啊?输入1582 10 4,1582 10 15,2000 15 50的总天数答案少了一天。