栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

NOI 24:打印月历【2019夏令营B】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NOI 24:打印月历【2019夏令营B】

24:打印月历【2019夏令营B】
  • 查看

  • 提交

  • 统计

  • 提问

  • 总时间限制:

    1000ms

  • 内存限制:

    65536kB

  • 描述

    给定年月,打印当月的月历表。

  • 输入

    输入为一行两个整数,第一个整数是年份year(1900 ≤ year ≤ 2099),第二个整数是月份month(1 ≤ month ≤ 12),中间用单个空格隔开。

  • 输出

    输出为月历表。月历表第一行为星期表头,如下所示: Sun Mon Tue Wed Thu Fri Sat 其余各行一次是当月各天的日期,从1日开始到31日(30日或28日)。 日期数字应于星期表头右对齐,即各位数与星期表头相应缩写的最后一个字母对齐。日期中间用空格分隔出空白。

  • 样例输入

    2006 5
    
  • 样例输出

    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
    
  • 提示

    闰年判断方法:能被4整除但不能被100整除,或者能被400整除。

    1900年1月1日是周一。

题解
  • 复习对齐输出
    c

    printf("%6dn", a); //右对齐6位
    printf("%-6dn", a);//左对齐6位
    

    c++

    #include 
    cout< 
  • 求[1900.1.1, y.m.1)的天数,%7确认是y.m.1周几

    • 如1900.1.8,7天,%7=0,则1.8的前一天是周日,所以1.8是周一,前面空天数1(Sun开始)

bool isleap(int y){
    return (y%4==0&&y%100) || y%400==0;
}
int mdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    int y,m;
    cin>>y>>m;
    int days=(y-1900)*365; //[1900,y) days
    for(int i=1900; i
        if(isleap(i)){
            ++days;
        }
    }
    //[1,m) days
    for(int i=1; i
        days+=mdays[i];
    }
    bool islp=isleap(y);
    if(islp && m>2){
        ++days;
    }
    
    cout<<"Sun Mon Tue Wed Thu Fri Sat"<
        ++d;
    }
    for(int i=1; i<=d; ++i){
        cout<
            cout<<"n";
            pos=0;
        }
        else{
            cout<<" ";
        }
    }
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号