C语言 - 万年历

#include<iostream>
#include<iomanip>
using namespace std;
int leapyear(int year);                         //判断该年是否为闰年
int theday(int year,int month);                 //判断该月天数
int whatdate(int year,int month);               //判断该月第一天是星期几
int typeday(int year,int month);                //打印该月日历
int main()
{
	int year;
	cout<<"please type the year you want search:";
	cin>>year;
	for(int month=1;month<=12;month++){
    cout<<"\t"<<year<<"年"<<month<<"月月历"<<endl;
	cout<<"\t"<<"日"<<"\t"<<"一"<<"\t"<<"二"<<"\t"<<"三"<<"\t"<<"四"<<"\t"<<"五"<<"\t"<<"六"<<endl;
	typeday(year,month);
	cout<<endl;
	}
	system("pause");
	return 0;
}
int leapyear(int year)
{
	int flag1=0;
	if(year%400==0||year%100!=0&&year%4==0)
		flag1=1;
	else
		flag1=0;
	return flag1;
}
int theday(int year,int month)
{
	int days;
	switch(month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12: days=31;break;
	case 4:
	case 6:
	case 9:
	case 11: days=30;break;
	case 2:
		if(leapyear(year)) days=29;
		else days=28;break;
	default :cout<<"error"<<endl;break;
	}
	return days;
}
int whatdate(int year,int month)
{
	int s=0;
	for(int i=2000;i<year;i++)
	{
		if(leapyear(i))
			s=s+366;
		else s=s+365;
	}
	for(int j=1;j<month;j++)
		s=s+theday(year,j);
	return s%7;
}

int  typeday(int year,int month)
{
	int n=0;
	for(int g=1;g<=whatdate(year,month);g++)
			cout<<"\t";	
	n=n-1;
	if(n==1) cout<<"\t\t\t\t\t\t\t";
	for(int k=1;k<=theday(year,month);k++)
	{	
		cout<<k<<"\t";
		if((n)%7==0)
			cout<<endl<<"\t";n=n+1;
	}
	return 0;
		
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值