天干地支(蓝桥杯)

天干地支

题目描述

古代中国使用天干地支来记录当前的年份。

天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(wù)、己(jǐ)、庚(gēng)、辛(xīn)、壬(rén)、癸(guǐ)。

地支一共有十二个,分别为:子(zǐ)、丑(chǒu)、寅(yín)、卯(mǎo)、辰(chén)、巳(sì)、午(wǔ)、未(wèi)、申(shēn)、酉(yǒu)、戌(xū)、 亥(hài)。

将天干和地支连起来,就组成了一个天干地支的年份,例如:甲子。

2020 年是庚子年。

每过一年,天干和地支都会移动到下一个。例如 2021 年是辛丑年。

每过 60 年,天干会循环 6 轮,地支会循环 5 轮,所以天干地支纪年每
60 年轮回一次。例如 1900 年,1960 年,2020 年都是庚子年。

给定一个公元纪年的年份,请输出这一年的天干地支年份。

输入描述

输入一行包含一个正整数,表示公元年份。
其中有 ,输入的公元年份为不超过 9999 的正整数。

输出描述

输入一行包含一个正整数,表示公元年份。

输入输出样例

示例

输入
2020
输出
gengzi

C语言

#include

int main()
{
  char tiangan[10][10]={"jia","yi","bing","ding","wu","ji","geng","xin","ren","gui"};
  //                      0     1     2     3      4    5     6
  char dizhi[12][10]={"zi","chou","yin","mao","chen","si","wu","wei","shen","you","xu","hai"};
  //                    0
  int year=2020;
  int i=6;
  int j=0;
  int n=0;
  scanf("%d",&n);
  if(n>2020)
  {
    for(int l=2020;l<n;l++)
    {
      i++;j++;
      if(i==10)	i=0;
      if(j==12)	j=0;
    }
  }
  else if(n<2020)
  {
    for(int l=2020;l>n;l--)
    {
      i--;j--;
      if(i==-1)	i=9;
      if(j==-1)	j=11;
    }
  }
  printf("%s%s",tiangan[i],dizhi[j]);
  return 0;
}

c++

解题思路:以零年为基准

#include
using namespace std;
#include
int main()
{
  string tiangan[]={"geng","xin","ren","gui","jia","yi","bing","ding","wu","ji"};
  string dizhi[]={"shen","you","xu","hai","zi","zhou","yin","mao","chen","si","wu","wei"};
  int n;
  //以0年为基准判断
  //2020为庚子年
  //2020%10=0说明0年和2020年一样为庚年;
  //2020%12=4(还差4年满一轮到子年)因为余4在子年往前推四年为申年,所以0年为申年;
  cin>>n;
  cout<<tiangan[n%10]<<dizhi[n%12]<<endl;
  return 0;
}

你可能感兴趣的:(蓝桥杯刷题,蓝桥杯,c++,c语言)