codeup——1931打印日期(特定格式的输入输出)

1931: 打印日期
时间限制: 1 Sec 内存限制: 32 MB
献花: 158 解决: 74
[献花][花圈][TK题库]
题目描述
给出年分m和一年中的第n天,算出第n天是几月几号。
输入
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
输出
可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
样例输入
2013 60
2012 300
2011 350
2000 211
样例输出
2013-03-01
2012-10-26
2011-12-16
2000-07-29

#include <iostream>
#include <fstream>
#include <queue>
using namespace std;

bool isLeap(int y)
{
    return (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0));
}


int main()
{
#ifdef _DEBUG
    ifstream cin("data.txt");
#endif // _DEBUG

    int a[13][2] = { { 0,0 },{ 31,31 },{ 28,29 },{ 31,31 },{ 30,30 },{ 31,31 },{ 30,30 },{ 31,31 },{ 31,31 },{ 30,30 },{ 31,31 },{ 30,30 },{ 31,31 } };   //一三五七八十腊,31天永不差,四六九东30天,唯有二月28,润二29
    int y,m, d,L;
    while (cin >> y >> d)
    {
        m = 1;
        L = isLeap(y) ? 1 : 0;
        while (a[m][L] < d)
        {
            d -= a[m][L];
            ++m;
            if (m > 12)
            {
                m = 1;
                ++y;
                L = isLeap(y);
            }
        }
        printf("%04d-%02d-%02d\n", y, m, d);
    }

#ifdef _DEBUG
    cin.close();
    system("pause");
#endif // _DEBUG

    return 0;
}

特定格式的输入输出知识点总结:

scanf("%s",str);输入字符数组时,无需取地址。

scanf("%c",&c);可读取空格字符串。

printf("%d\n\\n\n%%",a);想输出%或者/n时。

printf三种实用输出:

      %md:m位右对齐输出,高位空格补位。

      %0md:m位右对齐输出,高位0补位。

      %.mf:小数点后几位输出,不足的低位补0.

猜你喜欢

转载自blog.csdn.net/qq_42499471/article/details/109156475