分析:
干支纪年法中天干和地支的搭配可以用右图来表示,因为“天干”有10个,“地支”有12个,从“甲子”开始到“癸酉”,天干已经用完,又从“甲”开始,所以下一个干支纪年是“甲戌由题目给定的2009年是己丑年,可以推算出2004年的天干是甲,那么输入年份year的天干是什么呢?肯定是第(year-2004)%10个
甲、乙、丙、丁、戌、己、庚、辛、壬、癸
0 1 2 3 4 5 6 7 8 9
2004 2009 year
同理,可以推算出2008年的地支是子,输入年份year的地支是第(year-2008)%12个
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥
A B C D E F G H I J K L
20082009 year
在本题中,用数字字符和字母字符来表示天干和地支,所以求得天干和地支的数值后,分别加上字符'0和字符'A',就可以得到对应天干和地支的字符
注意,本题需要处理多组测试数据,而且是第3种输入情形(在不跳出循环的情况下输出数据)
#include<iostream>
using namespace std;
int main()
{
int year;
char g, b; //年份对应的天干和地支
while(cin >> year){
g = (year-2004)%10+'0';
b = (year-2008)%12+'A';
cout << g << b << endl;
}
return 0;
}