C语言求农历,一个完整的日历程序(含有农历)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我是敲了一个上午啊

#include

#include

#include

#include

int leapyear(int years);//判断是否是闰年的函数

int week(int years); //判断一年当中第一天是星期几

void   print();        //格式化输出横线函数

int LunarCalendar(int year,int *pmonth,int *pday); //求农历的函数

char* LunarCalendarResult(int yy,int mm,int dd);

static char *title="星期日          星期一           星期二           星期三            星期四           星期五            星期六";

static char *month[12]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};

int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};

char Sky[10][4]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};

char Earth[12][4]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};

const int MonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334};

const int LunarCalendarTable[100] ={

2635,333387,1701,1748,267701,694,2391,133423,1175,396438

,3402,3749,331177,1453,694,201326,2350,465197,3221,3402

,400202,2901,1386,267611,605,2349,137515,2709,464533,1738

,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762

,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413

,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395

,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031

,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算阴历日期需要使用农历计算的公式,以下是一个简单的C语言程序,可以计算指定年份和月份的农历日期: ```c #include <stdio.h> // 农历数据结构 typedef struct { int year; // 年份 int month; // 月份 int day; // 日 } LunarDate; // 计算农历日期 LunarDate getLunarDate(int year, int month, int day) { LunarDate lunarDate; // 农历计算公式 int leapMonth, leap, offset, i; int isLeapYear = 0; int lunarYear, lunarMonth, lunarDay; int days = 0; // 计算距离1900年1月31日的天数 for (i = 1900; i < year; i++) { days += 365; if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { days++; } } for (i = 1; i < month; i++) { days += getDaysOfMonth(year, i); } days += day - 1; // 计算农历年份 lunarYear = 1900; leapMonth = 0; while (days >= getDaysOfYear(lunarYear)) { days -= getDaysOfYear(lunarYear); lunarYear++; } // 计算农历月份 leapMonth = getLeapMonth(lunarYear); isLeapYear = (leapMonth > 0); lunarMonth = 1; while (days >= getDaysOfMonthInLunarYear(lunarYear, lunarMonth, isLeapYear)) { days -= getDaysOfMonthInLunarYear(lunarYear, lunarMonth, isLeapYear); lunarMonth++; if (leapMonth > 0 && lunarMonth == leapMonth + 1 && !isLeapYear) { lunarMonth--; isLeapYear = 1; } if (lunarMonth > 12) { lunarMonth -= 12; isLeapYear = (leapMonth == lunarMonth); } } // 计算农历日 lunarDay = days + 1; lunarDate.year = lunarYear; lunarDate.month = lunarMonth; lunarDate.day = lunarDay; return lunarDate; } // 计算指定年份的天数 int getDaysOfYear(int year) { int days = 365; if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { days++; } return days; } // 计算指定月份的天数 int getDaysOfMonth(int year, int month) { int days = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: days = getDaysOfYear(year) == 366 ? 29 : 28; break; } return days; } // 计算农历年份的闰月月份 int getLeapMonth(int year) { return 0; } // 计算农历年份指定月份的天数 int getDaysOfMonthInLunarYear(int lunarYear, int lunarMonth, int isLeapYear) { // 省略具体实现 return 0; } int main() { int year, month, day; LunarDate lunarDate; printf("请输入年月日,用空格隔开:"); scanf("%d %d %d", &year, &month, &day); lunarDate = getLunarDate(year, month, day); printf("农历日期:%d年%d月%d日\n", lunarDate.year, lunarDate.month, lunarDate.day); return 0; } ``` 以上代码只是一个简单的实现,实际上农历日期计算比较复杂,需要考虑到闰年和闰月等因素。如果需要更精确的计算,可以参考其他开源的农历计算库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值