打印日期(华科上机题)

前言:

21考研,不论能否进复试记录一下准备路上写下的垃圾代码。本来啃《算法笔记》,但是感觉太多了做不完,改做王道机试指南。

题目描述:

给出年分m和一年中的第n天,算出第n天是几月几号。

输入描述

包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出描述:

可能有多组测试数据,对于每组数据,
按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

解答:

#include <stdio.h>

const int daytab[2][13] = {
    
    
	{
    
    0,31,28,31,30,31,30,31,31,30,31,30,31},
	{
    
    0,31,29,31,30,31,30,31,31,30,31,30,31}
};
bool isleapyear(int year) {
    
    
	return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
int main()
{
    
    
	int year, mon=0, day, date ;
	while (scanf("%d %d", &year, &date) != EOF) {
    
    
		for (int i = 0; i<13; i++)
		{
    
    
			if ((date - daytab[isleapyear(year)][i]) > 0)
				date -= daytab[isleapyear(year)][i];
			else break;
			mon++;
		}
		day = date;
		printf("%02d-%02d-%02d\n", year, mon, day);
		mon = 0;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44897291/article/details/112665587
今日推荐