LQ0249 干支纪年程序填空

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0249 干支纪年程序填空相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2012初赛 C++ C组E题

题目描述
本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

在我国古代和近代,一直采用干支法纪年。它采用 10 天干和 12 地支配合,一个循环周期为 60 年。

10 天干是:甲,乙,丙,丁,戊,己,庚,辛,壬,癸;

12 地支是:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥。

如果某年是甲子,下一年就是乙丑,再下是丙寅,…癸酉,甲戌,乙亥,丙子,…

总之天干、地址都是循环使用,两两配对。

今年(2012)是壬辰年,1911 年辛亥革命

下面的代码根据公历年份输出相应的干支法纪年。已知最近的甲子年是1984 年。

请仔细阅读代码,并填写划线部分缺失的代码。

源代码
C

#include <stdio.h>
#include <stdlib.h>
void f(int year)

    char* x[] = "甲","乙","丙","丁","戊","己","庚","辛","壬","癸";
    char* y[] = "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥";
    
    int n = year - 1984;
    
    while(n<0) n += 60;

    printf("%s%s\\n", x[_______], y[_______]);


int main(int argc, char* argv[])

    f(1911);
    f(1970);
    f(2012);
    return 0;

问题分析
2空分别填入“n%10”和“n%12”

AC的C语言程序如下:

#include <stdio.h>
#include <stdlib.h>
void f(int year)

    char* x[] = "甲","乙","丙","丁","戊","己","庚","辛","壬","癸";
    char* y[] = "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥";
    
    int n = year - 1984;
    
    while(n<0) n += 60;

    printf("%s%s\\n", x[n%10], y[n%12]);


int main(int argc, char* argv[])

    f(1911);
    f(1970);
    f(2012);
    return 0;

以上是关于LQ0249 干支纪年程序填空的主要内容,如果未能解决你的问题,请参考以下文章

干支纪年算法

天干地支的来历

天干地支

27 October in ss

LQ0254 轮换程序填空

LQ0176 杨辉三角程序填空