如何用C++打印月历

[复制链接]
查看11 | 回复0 | 2015-10-29 17:45:03 | 显示全部楼层 |阅读模式
/* 输入的年份月份有一个为0 就跳出循环,否则可以一直输入年份和月份并输出月历*/#include using namespace std;/*得到所输入年月的第一天是星期几0~6*/int getdate(int y,int m);/*判断所输入的是否是闰月,是则返回1,否则返回0*/int leap(int y);/*打印输入月份月历表*/void print(int y,int m);int main(){
int y,m;
int i=1;
cout>y>>m)
{
if(y==0||m==0) { coutint days[]={0,31,59,90,120,151,181,212,243,273,304,334,365};int month[]={31,28,31,30,31,30,31,31,30,31,30,31};char weekday[7][7]={"一","二","三","四","五","六","七"};int week(int y,int m,int d){ int day=0; day=days[m-1]+d-1; return (y-1+(y-1)/4-(y-1)/100+(y-1)/400+day)%7;}void print(){ puts("1.Week(查询某天是星期几)"); puts("2.Month(打印某月日历)"); puts("3.Calendar(打印某年日历)"); puts("4.Exit(退出)");}void printmonth(int y,int m){ int i,j,w; w=(week(y,m,1)+1)%7; puts("SUNMONTUEWEDTHUFRISAT"); for(i=1;i<=w;i++)printf("%5c",' '); for(j=i;j<i+month[m-1]+(m==2&&(y%4==0&&(y%100)||y%400==0));j++) {printf("%5d",j-i+1);if(j%7==0) puts(""); } if((j-1)%7)puts("");}int main(){ int i,y,m,d,c; char op[1]; print(); while(scanf("%d",&c)==1) {if(c==1){ do { puts("请输入年月日(XXXX,XX,XX)"); scanf("%d%d%d",&y,&m,&d); printf("%4.4d年%2.2d月%2.2d日是星期%s,是否继续查询(Y/N)?\n",y,m,d,weekday[week(y,m,d)]); scanf("%s",op); }while(op[0]=='Y'); print();}if(c==2){ do {
puts("请输入要打印的月份(XXXX)");
scanf("%d%d",&y,&m);
printf("%4.4d年%2.2d月\n",y,m);
printmonth(y,m);
puts("是否继续打印(Y/N)?");
scanf("%s",op); }while(op[0]=='Y'); print();}if(c==3){ do {
puts("请输入要打印的年份(XXXX)");
scanf("%d",&y);
printf("%4.4d\n",y);
for(i=1;i<=12;i++)
{
printf("%2.2d月\n",i);
printmonth(y,i);
}
puts("是否继续打印(Y/N)?");
scanf("%s",op); }while(op[0]=='Y'); print();}if(c==4){ puts("是否要真的退出(Y/N)?"); scanf("%s",op); if(op[0]=='Y')
return 0; else print();} }}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行