2.2打印日历实现输出某年某月

//打印日历实现输出某年某月
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
//判断平闰年
int doyear(int year)
{
if((year%4==0)&&(year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
//判断某年的第一天是星期几
int doweek(int year)
{
 int days=(year-1)*365+(year-1)/4-(year-100)/100+(year-1)/400;
 return days%7;
 }
 //打印星期
 void printweek()
 {
 int i;//计数
 string week[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
 for(i=0;i<7;i++)
 cout<<setw(5)<<week[i];
 cout<<endl;
 }
 //打印月份
 void printmonth(int m)
 {
 //int i;
 string month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dev"};
 //for(i=0;i<12;i++)
 //if(m=i+1)
 cout<<setw(5)<<month[m-1];
 cout<<endl;
 }
 //打印日历
 void printall(int year,int month)
 {
 int i,d;
 int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 if(doyear(year))
 monthday[1]=29;
 int sum=0;
 for(i=0;i<month-1;i++)
 sum+=monthday[i];
 int weekday=((doweek(year)+sum)%7);
 cout<<setw(5)<<year<<" "<<month<<"月"<<endl<<endl;
 cout<<setw(5)<<"Calendar";
 cout<<setw(20)<<year<<"-"<<month<<endl;
 for(i=1;i<=5*7;i++)
 cout<<"*";
 cout<<endl;
 printmonth(month);
 printweek();
 for(d=1;d<=monthday[month-1];d++)
 {
 if(d==1){
 for(i=1;i<=weekday;i++)
 cout<<setw(5)<<" ";
 cout<<setw(5)<<d;
 } 
 else
	 cout<<setw(5)<<d;
 if((weekday+d-1)%7==6)
 cout<<endl;
 }
 }
 //主函数
 int main() 
 {
    int year,month;
	cout<<"please input which year do you want"<<endl;
	cin>>year;
	cout<<"please input which month do you want"<<endl;
	cin>>month;
    printall(year,month);
	cout<<endl;
	return 0;
}

  

转载于:https://www.cnblogs.com/chenzinumber1/p/8085440.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值