KY221 打印日期

KY221 打印日期

⭐️难度:较难(其实还好)

⭐️知识点:模拟

📖题目:

📚题解1:自己做

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

using namespace std;

void count(int year, int sum) {
    int dayOfMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    int isLeap;  // 是否是闰年
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {  // 闰年二月29天
        dayOfMonth[2] = 29;
    }
    int month = 1;
    int flag = 0;
    for (month = 1;;month++) {
        if (sum > dayOfMonth[month]) {
            sum = sum - dayOfMonth[month];
            flag = 1; // sum超过31天
        }
        else {
            break;
        }
    }
    
    int day = sum;

    printf("%04d-%02d-%02d\n", year, month,day);
}

int main() {
    int year = 0 ;
    int sum = 0;
    while (scanf("%d%d",&year,&sum) != EOF) {
        count(year, sum);
    }
   
    return 0;
}

📚题解2:利用NextDay函数,和 C++中的引用。

cpp 复制代码
 #include <stdio.h>
    using namespace std;
    void NextDay(int &year, int &month, int &day) {
        // & 出现在定义or形参当中 表示引用的意思 出现在其他位置,表示取地址
        // 存储一下 月份和天数的对应关系
        int dayOfMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
        int isLeap; // 是否是闰年 
        isLeap = year % 400 == 0 || year % 4 == 0 && year % 100 != 0;
        if (isLeap) {
            dayOfMonth[2] = 29;
        }
        else {
            dayOfMonth[2] = 28;
        }
    
        ++day;
        if (day > dayOfMonth[month]) {
            day = 1;
            ++month;
        }
        if (month > 12) {
            month = 1;
            ++year;
        }
        //printf("NextDay year = %d, month = %d, day = %d\n", year, month, day);
    }
    //int main() {
    //	int year = 1900;
    //	int month = 2;
    //	int day = 28;
    //	NextDay(year, month, day);
    //	printf("main year = %d, month = %d, day = %d\n", year, month, day);
    //	return 0;
    //}
    
    int main() {
        int year, n;
        while (scanf("%d%d", &year, &n) != EOF) {
            int next = 1;
            int curmonth = 1;
            int curday = 1;
            while (1) {
                if (next == n) {
                    break;
                }
                NextDay(year, curmonth, curday);
                ++next;
            }
            printf("%04d-%02d-%02d\n", year, curmonth, curday);
        }
        return 0;
    }

⭕️格式化输出要求:

相关推荐
刘琦沛在进步3 分钟前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机15 分钟前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经22 分钟前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
R_.L32 分钟前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
Zach_yuan41 分钟前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络
云姜.1 小时前
java多态
java·开发语言·c++
CoderCodingNo1 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
陳10301 小时前
C++:红黑树
开发语言·c++
一切尽在,你来1 小时前
C++ 零基础教程 - 第 6 讲 常用运算符教程
开发语言·c++
泉-java1 小时前
第56条:为所有导出的API元素编写文档注释 《Effective Java》
java·开发语言