#include<stdio.h>
int main()
{
int year, month, day;
int leap = 0, i, temp = 0;
int lunar_month, lunar_day;
int sum = 0;
int gan_index, zhi_index;
char ganzhi[60][10]={
"甲子","乙丑","丙寅","丁卯","戊辰","己巳","庚午","辛未","壬申","癸酉",
"甲戌","乙亥","丙子","丁丑","戊寅","己卯","庚辰","辛巳","壬午","癸未",
"甲申","乙酉","丙戌","丁亥","戊子","己丑","庚寅","辛卯","壬辰","癸巳",
"甲午","乙未","丙申","丁酉","戊戌","己亥","庚子","辛丑","壬寅","癸卯",
"甲辰","乙巳","丙午","丁未","戊申","己酉","庚戌","辛亥","壬子","癸丑",
"甲寅","乙卯","丙辰","丁巳","戊午","己未","庚申","辛酉","壬戌","癸亥"
};
char shengxiao[12][10]={
"鼠","牛","虎","兔","龙","蛇",
"马","羊","猴","鸡","狗","猪"
};
char shu[12][10]={
"一","二","三","四","五","六","七","八","九","十","十一","十二"
};
char ri[31][10]={
"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"
};
char jieri[24][10]={
"元旦","情人节","清明节","劳动节","端午节","七夕节",
"中秋节","国庆节","万圣节","Christmas","跨年"
};
char yue[12][10]={
"正","二","三","四","五","六","七","八","九","十","冬","腊"
};
printf("请输入公历年月日:\n");
scanf("%d %d %d", &year, &month, &day);
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
leap = 1; // 判断是否为闰年
for (i = 1900; i < year; i++){
if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
temp += 366; // 计算年份总天数
else
temp += 365;
}
for (i = 1; i < month; i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: sum += 31; break;
case 4:
case 6:
case 9:
case 11: sum += 30; break;
case 2: sum += 28 + leap; break;
}
}
sum += day - 1; // 到当月几号的天数
temp += sum; // 当年总天数
lunar_day = temp % 29 + 1;
lunar_month = temp % 12;
if (lunar_day == 1 && lunar_month == 0)
printf("\n%d年为甲子年(鼠年)\n", year);
if (lunar_day == 1 && lunar_month == 6)
printf("\n%d年为丙午年(马年)\n", year);
if (lunar_day == 1 && lunar_month == 8)
printf("\n%d年为戊戌年(狗年)\n", year);
gan_index = (year-4)%10;
zhi_index = (year-4)%12;
printf("公历%s年,", year);
printf("农历%s%s年,",ganzhi[gan_index*12+zhi_index], shengxiao[zhi_index]);
if (lunar_day == 1)
printf("农历%s年。", shu[lunar_month]);
else
printf("农历%s%s。", yue[lunar_month], ri[lunar_day-1]);
if (month == 1 && day == 1)
printf("\n今天是元旦。\n");
else if (month == 2 && day == 14)
printf("\n今天是情人节。\n");
else if (month == 4 && day == 4)
printf("\n今天是清明节。\n");
else if (month == 5 && day == 1)
printf("\n今天是劳动节。\n");
else if (month == 5 && (day == 5 || day == 6 || day == 7))
printf("\n今天是端午节。\n");
else if (month == 7 && day == 7)
printf("\n今天是七夕节。\n");
else if (month == 8 && day == 15)
printf("\n今天是中秋节。\n");
else if (month == 10 && day == 1)
printf("\n今天是国庆节。\n");
else if (month == 10 && day == 31)
printf("\n今天是万圣节。\n");
else if (month == 12 && day == 25)
printf("\n今天是Christmas。\n");
else if (month == 12 && day == 31)
printf("\n今天是跨年。\n");
else
printf("\n今天不是节日哦。\n");
return 0;
}
用c实现农历转换
最新推荐文章于 2025-02-06 00:15:00 发布