...年历:首先确定该年的元旦是星期几,然后循环12个月,其中用到判断该年...
发布网友
发布时间:2024-05-10 21:48
我来回答
共2个回答
热心网友
时间:2024-06-02 04:05
我发现你算星期的那个函数只对每年第一个月算出来是准的其它就不一定了,所以我每年只算1月1日是星期几,以后按顺序推就行了。
程序按我的习惯化简了些,希望你能看懂。
f++就是星期数加一,如果是周五下次就变周六,再加是周日而周日我们是用0表示的,所以从用f%=7;来计算,%是求模运算,就是求f除以7的余数,再把它保存在f里。
#include<iostream.h>
class Date {
private :
int year ;
public :
void input_year();
void output_year();
int output_xq(int,int) ;
void output_date() ;
};
void Date::input_year( )
{
int year1 ;
cout << "please input 年:" << endl ;
cin >> year1;
year = year1;
}
void Date::output_year ( )
{
if( (year%4==0 && year%100) || year % 400 == 0)//闰年判别条件
cout << year << "是润年" << endl ;
else
cout << year << "不是闰年" << endl ;
}
int Date::output_xq(int month,int day )
{
if( month == 1 || month == 2 )
{
year-= 1 ;
month+=12 ;
}
//return (day+1+2*month+3*(month+1)/5+year+(year/4)-year/100+year/400) % 7 ;
return (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1) % 7;
}
void Date:: output_date( )
{
int day_tab[13] = {0,31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };
if((year%4==0 && year%100) || year % 400 == 0) day_tab[2]++;//闰年判别条件,闰年就给2月加一天
int i,f,j;
f=output_xq(1,1);
for(i=1;i<=12;i++)
{
cout<<i<<"月"<<endl;
cout<<"日\t一\t二\t三\t四\t五\t六"<<endl;
for(j=0;j<f;j++) cout<<"\t";//输出每月第一天前面的空格
for(j=1;j<=day_tab[i];j++)
{
cout<<j<<"\t";
if(f==6) cout<<endl;
f++;
f%=7;
}
cout<<endl;
}
}
void main()
{
Date ob;
ob.input_year();
ob.output_year();
ob.output_date();
}
热心网友
时间:2024-06-02 04:05
if( year % 4 ==0 && year % 400 == 0 )
要改吧
if( year % 4 ==0 && year % 400 != 0 )