d100: 神仙?妖怪?谢谢!

题目:点击打开链接

题目大意:

内容:

输入年份和月份,输出日历表!
附注:由于公元日历的编排,每400年是一个大周期,在400年中设置97个闰年,于是2001年与1年的1月1日都是星期一,对于输入的年号y,y年的1月1日是w,其中w = s mod 7 的余数,0 代表周日,那么s的值如何计算呢?s=y-1+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]+1

输入说明:

一行两个整数,代表年份和月份(不需要判错)

输出说明:

第一行,星期的标志,每个占4位

若干行,每行7个整数(代表周日至周六),每个整数占4位字符空间。

输入样例:help

2009 7 

输出样例 :

Sun Mon Tue Wed Thu Fri Sat
                      1     2    3    4 
 5     6     7     8    9     10  11  
12    13   14   15  16   17  18 
19    20   21   22  23   24  25 
26    27   28   29  30   31
源代码:

#include<iostream>
using namespace std;
int main()
{
        int Year,Month;
        cin>>Year>>Month;
        int s=Year-1+((Year-1)/4)-((Year-1)/100)+((Year-1)/400)+1;                         
        int w=s%7;
        int Array[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};          //保存一年十二个月的天数
        if((Year%4==0&&Year%100!=0)||(Year%400==0))                //判断闰年
                Array[2]=29;
        int sum=0;
        for(int i=1;i<Month;i++)
                    sum+=Array[i];
        w=w+sum%7;
        w=(w>7)?(w-7):w;                                                                    //判断星期几
        cout<<"Sun Mon Tue Wed Thu Fri Sat"<<endl;
        for(int i=0;i<=w;i++)
                cout<<"   ";                                                                        //①
        for(int i=1;i<=Array[Month];i++)
        {
                if(w%7==0)
                cout<<endl;
                if(i<10)
                cout<<" ";                                                                         //②(①,②  用于调节输出格式                                             
                cout<<i<<"  ";
                w++;
        }
        return 0;

}

d100: 神仙?妖怪?谢谢!_第1张图片

注意:

原题目中的输出样例是不对的,我刚开始按那个格式是那几次都WA了,它一定要严格按照对应的位置输出!!!

希望对你有用。


你可能感兴趣的:(源代码,日历,iostream)