如何从阳历算出农历年月日时的天干地支?
如何从阳历算出农历年月日时的天干地支?
要求可编译的C或C++代码。
以下是网上的,但编译时出错:
// Lunar.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
/*
prototype: int calconv( struct convdate * );
struct convdate
{
int source; ==0 则输入日期为西历, !=0 则输入为农历
int solaryear; 输出或输入之西历年份
int solarmonth; 西历月
int solardate; 西历日
int lunaryear; 输出或输入之农历年份
int lunarmonth; 农历月
int lunardate; 农历日
int weekday; 该日为星期几 ( 0==星期日, 1==星期一, ... )
int kan; 该日天干 ( 0==甲, 1==乙, ..., 9==癸 )
int chih; 该日地支 ( 0==子, 1==丑, ..., 11==亥 )
};
呼叫时须设定 souce 的值, 若为 0 则为西历转农历, 否则为农历转西历. 然後视
输入为西历或农历来设定西历或农历的年月日. 转换後的年月日会填入结构中( 农
历或西历 ), 以及该日为星期几, 天干地支.
若函式的返回值为 0 表示没有错误, 1 为输入之年份错误, 2 为输入之月份错误,
3 为输入之日期错误.
输入之西历年须在 1937 - 2031 间
输入之农历年须在 1936 - 2030 间
若须扩充, 则增加 lunarcal[]
*/
char kan[10][4]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
char chih[12][4]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
#define firstyear 1936 /* the first year in lunarcal[] */
.......................................
else
printf("未知错误!\n");
printf("谢谢你使用本程序!\n");
return 0;
}
出错信息如下:
哪位达人能解决?thanks.
1>------ 已启动全部重新生成: 项目: Lunar, 配置: Debug Win32 ------
1>正在删除项目“Lunar”(配置“Debug|Win32”)的中间文件和输出文件
1>正在编译...
1>stdafx.cpp
1>正在编译...
1>Lunar.cpp
1>d:\myproj\vs\vc9\dagl\lunar\lunar\lunar.cpp(215) : error C2440: “=”: 无法从“int *”转换为“int”
1> 没有使该转换得以执行的上下文
1>d:\myproj\vs\vc9\dagl\lunar\lunar\lunar.cpp(253) : error C2440: “=”: 无法从“int *”转换为“int”
1> 没有使该转换得以执行的上下文
1>d:\myproj\vs\vc9\dagl\lunar\lunar\lunar.cpp(257) : error C2446: “>”: 没有从“int *”到“int”的转换
1> 没有使该转换得以执行的上下文
1>d:\myproj\vs\vc9\dagl\lunar\lunar\lunar.cpp(257) : error C2040: “>”: “int”与“int [14]”的间接寻址级别不同
1>d:\myproj\vs\vc9\dagl\lunar\lunar\lunar.cpp(258) : error C2113: “-”: 指针只能从另一个指针上进行减法运算
1>生成日志保存在“file://d:\Myproj\vs\vc9\dagl\Lunar\Lunar\Debug\BuildLog.htm”
1>Lunar - 5 个错误,0 个警告
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========