用C语言写出 要求输入历史上任一年份,输出该年的天干地支
时间: 2023-06-03 10:01:57 浏览: 186
好的,我可以回答。请参考下面的代码:
```c
#include <stdio.h>
char* HeavenlyStem[] = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
char* EarthlyBranch[] = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
int StartYear = 1900;
int main()
{
int year;
printf("请输入历史上任一年份:");
scanf("%d", &year);
if (year < StartYear)
{
printf("输入年份不正确\n");
return 1;
}
int index = (year - StartYear) % 60;
printf("%s%s年\n", HeavenlyStem[index % 10], EarthlyBranch[index % 12]);
return 0;
}
```
以上代码可以输出历史上任意一年对应的天干地支。其中,`HeavenlyStem` 是天干的名称,`EarthlyBranch` 是地支的名称。`StartYear` 是计算天干地支的起始年份。根据天干地支的规律,每 60 年为一个周期,每一年对应一组天干地支。因此,我们可以通过取模的方式计算出当前年份对应的天干地支组合。
相关问题
c语言天干地支pta
### C语言实现天干地支计算
在C语言中,可以利用数组来存储天干和地支,并通过模运算找到对应的索引来获取特定年份的天干地支组合。下面是一个完整的例子用于解决PTA上的相关问题。
#### 完整代码示例
```c
#include <stdio.h>
int main() {
char *tian[] = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
char *di[] = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};
int year;
printf("请输入年份:");
scanf("%d", &year);
// 计算相对于某个基准年的偏移量
int offset_tian = (year - 4) % 10; // 基准年设为公元元年(即西汉太初历),其对应的是'甲子'
if (offset_tian < 0) offset_tian += 10;
int offset_di = (year - 4) % 12;
if (offset_di < 0) offset_di += 12;
printf("该年的天干地支是:%s%s\n", tian[offset_tian], di[offset_di]);
return 0;
}
```
这段代码定义了两个字符指针数组`tian` 和 `di` 来保存所有的天干和地支名称[^3]。对于给定的一年,程序会先求得它距离设定的一个起始点(这里选用了公元元年作为参考)有多少个周期过去了,再据此定位到具体的天干地支位置并打印出来。
为了适应不同的输入情况以及满足PTA平台的要求,在实际提交时可能还需要做一些调整,比如处理多个测试案例或是按照指定格式输出结果等。
阅读全文