IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 年月日转天数,天数转月日 -> 正文阅读

[数据结构与算法]年月日转天数,天数转月日

#include <stdio.h>

//为什么要开大小为13的数组?为了使月份与下标对应。例如一月day_p[1]==31
int day_p[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int day_r[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };


//年月日转天数 思路:
1,判断润/平年
2,遍历对应的数组,依次把每月的天数相加,直到你输入的月份为止
 例如,你输入的是2007年7月21日,遍历到6月就行了。然后把你输入的天数(21)加上

int Dayfofyear(int year, int month, int day) {
    //判断润年
	int res = 0;
	bool st = false;
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		st = true;
	}

    
	if (st) {
		for (int i = 1; i < month; i++) {
			res = res + day_r[i];
		}
		res += day;
	}
	else {
		for (int i = 1; i < month; i++) {
			res = res + day_p[i];
		}
		res += day;
	}
	return res;
}



//天数转月日 思路:
1,判断润年,遍历对应的数组
2,依次遍历月份数组,直到你的天数总和(res) > yearday。
   这时就说明你天数加多了,需要倒退。
   所以要 month--

举个例子,模拟一下。假如你输入的是 2009 209
1,这个是平年,使用对应的数组。 总天数res=0

遍历一月i=1,res=res+[1]=31,i++
遍历二月i=2,res=res+[2]=31+28=59,i++
遍历三月i=3,res=res+[3]=59+31=90,i++
遍历四月i=4,res=res+[4]=90+30=120,i++
遍历五月i=5,res=res+[5]=120+31=151,i++
遍历六月i=6,res=res+[6]=151+30=181,i++
遍历七月i=7,res=res+[7]=181+31=212,i++
这时res=212>209。说明肯定是处于7月份的,因为当1~~7月总天数为212天
但现在i==8,所以回退月份i--
然后把多加上的天数减去,res=res-[7]=212-31=181
1~~6月总天数为181天,所以咱们处于7月份,第209-181=28天









void MonthDay(int year, int yearday) {
	int res = 0;
	bool st = false;
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
		st = true;
	}


	int month = 1,day;
	if (st) {
		while (res < yearday) {
			res = res + day_r[month];
			month++;
		}
		month--;
		res -= day_r[month];
		day = yearday - res;
	}
	else {
		while (res < yearday) {
			res = res + day_p[month];
			month++;
		}
		month--;
		res -= day_p[month];
		day = yearday - res;
	}
}

int main() {
    //输入输出自己搞
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:31:56  更:2022-04-27 11:32:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:26:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码