1. 程式人生 > >小朋友學演算法(15):計算年份的天干地支

小朋友學演算法(15):計算年份的天干地支

十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸;
十二地支:子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥。

天干地支紀年法首先是天干在前,地支在後,比如今年2018就是戊戌年。

天干演算法:
4、5、6、7、8、9、0、1、2、3對應的十天干就是
甲、乙、丙、丁、戊、己、庚、辛、壬、癸,
這裡的數字是年份的最後的一位數字,比如2018年,最後一位是8,對應的天干就是戊。

地支演算法:
用年代數除以12,後面的餘數就代表某個地支,
餘數分別為:4、 5、 6、 7、 8、 9、 10、 11、 0(能整除)、1、 2、3,
代表地支為:子、醜、寅、卯、辰、巳、午、 未、 申、酉、戌、亥
以2018年為例,2018 % 12 = 2,對應的地支就是戌。所以2018年是戊戌年。

實現程式碼:

#include<iostream>
using namespace std;

int main()
{
	long long year;
	cin >> year; 	// 輸入年份
	
	// A-甲,B-乙,C-丙,D-丁,E-戊,F-己,G-庚,H-辛,I-壬,J-癸 
	char a[10] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};
	
	// 1-子,2-醜,3-寅,4-卯,5-辰,6-巳,7-午,8-未,9-申,10-酉,11-戌,12-亥
	int b[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
	
	int single = year % 10; 	// 天干是求個位數
	int index = (single - 4 + 10) % 10;
	cout << a[index];
	
	int mod = year % 12;	// 地支是求除以12的餘數
	index = (mod - 4 + 12) % 12;
	cout << b[index] << endl;
	 
    return 0;
}

執行結果:
第一組:

2018
E11

第二組:

2384036917920
G9

少兒程式設計QQ群:581357582,少兒英語QQ群:952399366,微信:307591841
公眾號.jpg