C语言年历显示程序设计

Python032

C语言年历显示程序设计,第1张

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

char* month[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nev","Dec"}

char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}

int j_leapyear(int year) //定义函数检测输入年份是否为闰年

{

if((/*year%400==0*/year%4==0&&year%100!=0)||(year%400==0))

return (1)

// else if(year%4==0&&year%100!=0)

// return (1)

else return 0

}

int month_day(int year,int month) //检测该年月份有多少天

{

int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}

if(j_leapyear(year)&&month==2)

return 29

else return (mon_day[month-1])

}

int j_week(int year,int month,int day) //检测该天是星期几

{

int d=0,i //d表示该天在该年份的累计天数

int w

/* int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31}

if(j_leapyear(year)==1)

month_day[1]=29

for(i=0i<monthi++)

d+=month_day[i]

d=d+day*/

for(i=1i<monthi++)

d+=month_day(year,i)

d+=day

w=(year-1)+(int)(year-1)/4-(int)(year-1)/100+(int)(year-1)/400+d//网上公式

return ((int)w%7)

}

int allyear(int year) //输出全年日历

{

int i,j,b

printf("\n%d 日历",year)

for(i=1i<=12i++)

{

printf("\n\n\t%s\n",month[i-1])

// printf(" 7 1 2 3 4 5 6 \n")

printf(" S M T W T F S \n")

b=j_week(year,i,1)

for(j=1j<=month_day(year,i)+bj++)

{

if(j<=b)

printf(" ")

else if(j-b<10)

printf("%2d ",j-b)

else printf("%2d ",j-b)

//else printf("%2d ",j-b)

if(j%7==0)

putchar('\n')

}

putchar('\n')

}

return 0

}

void month_print(int year,int month) //输入一个年月,输出这个月的日历

{

int i,c,d

c=month_day(year,month)

printf("\n\n%d年%d月日历\n",year,month)

printf(" S M T W T F S \n")

d=j_week(year,month,1)

for(i=1i<=c+di++)

{

if(i<=d)

printf(" ")

else printf("%2d ",i-d)

if(i%7==0)

putchar('\n')

}

putchar('\n')

}

int jisuan_day(int year,int month,int day,int x,int y,int z) //输入年月日,输出距x年y月z日有多少天,星期几,以及是否是公历节日

{

int i,a,b,c=0,d=0,days=0,m=0,n=0,t

a=year>=x?year:x

b=year<x?year:x

if(a>b)

{

for(i=b+1i<ai++)

c+=j_leapyear(i)

}

else c=0

if(year!=x)

d=a-b-1

else d=0

m=365*d+c

if(year<x)

{

for(i=monthi<=12i++)

n+=month_day(year,i)

days=m+n+z-day

}

else if(year>x)

{

for(i=yi<=12i++)

n+=month_day(x,i)

for(i=1i<monthi++)

n+=month_day(year,i)

days=m+n+day-z

}

else

{

for(i=month>=y?y:monthi<(month>=y?month:y)i++)

n+=month_day(x,i)

days=abs(day-z)+n //输出距离y月z日有多少天

}

printf("这天离%d年%d月%d号有%d天\n",x,y,z,days)

t=j_week(year,month,day)

if(t==0)//输出星期几

printf("这天星期日")

else if(t==1)

printf("这天星期一")

else if(t==2)

printf("这天星期二")

else if(t==3)

printf("这天星期三")

else if(t==4)

printf("这天星期四")

else if(t==5)

printf("这天星期五")

else if(t==6)

printf("这天星期六")

putchar('\n')

if(month==1&&day==1)

printf("这天是元旦节")

else if(month==2&&day==14)

printf("这天是情人节")

else if(month==3&&day==8)

printf("这天是妇女节")

else if(month==3&&day==12)

printf("这天是植树节")

else if(month==4&&day==1)

printf("这天是愚人节")

else if(month==4&&day==4)

printf("这天是清明节")

else if(month==5&&day==1)

printf("这天是劳动节")

else if(month==6&&day==1)

printf("这天是儿童节")

else if(month==8&&day==1)

printf("这天是建军节")

else if(month==9&&day==10)

printf("这天是教师节")

else if(month==10&&day==1)

printf("这天是国庆节")

else if(month==12&&day==25)

printf("这天是圣诞节")

else printf("这天不是特殊节日")

putchar('\n')

return days

}

void fish_or_net(int year,int month,int day) //判断是打鱼还是晒网

{

int q

int i,a,b,c=0,d=0,days=0,m=0,n=0

a=year>=1990?year:1990

b=year<1990?year:1990

if(a>b)

{

for(i=b+1i<ai++)

c+=j_leapyear(i)

}

else c=0

if(year!=1990)

d=a-b-1

else d=0

m=365*d+c

if(year<1990)

{

for(i=monthi<=12i++)

n+=month_day(year,i)

days=m+n+1-day

}

else if(year>1990)

{

for(i=1i<=12i++)

n+=month_day(1990,i)

for(i=1i<monthi++)

n+=month_day(year,i)

days=m+n+day-1

}

else

{

for(i=month>=1?1:monthi<(month>=1?month:1)i++)

n+=month_day(1990,i)

days=abs(day-1)+n//先确定这天离1990年1月1日有多少天

}

q=days%5+1

if(q==1||q==2||q==3) //判断打鱼还是晒网

printf("渔人今天打鱼")

else printf("渔人今天晒网")

putchar('\n')

}

/*int main() //这部分内容用来校检

{

int j_leapyear(int year)

int month_day(int year,int month)

int j_week(int year,int month,int day)

int allyear(int year)

void month_print(int year,int month)

int jisuan_day(int year,int month,int day,int x,int y,int z)

void fish_or_net(int year,int month,int day)

int x,y,z,year,month,day

// allyear(2015)

//month_print(2016,12)

printf("请输入今天的日期(按年,月,日输入,如2016,1,14表示2016年1月14日):")

scanf("%d,%d,%d",&x,&y,&z)

printf("\n请随便输入一个日期,格式同上:")

scanf("%d,%d,%d",&year,&month,&day)

jisuan_day(year,month,day,x,y,z)

// fish_or_net(x,y,z)

return 0

} // 这部分内容是用来检测上述函数是否出错的

*/

int main()

{

int j_leapyear(int year)

int month_day(int year,int month)

int j_week(int year,int month,int day)

int allyear(int year)

void month_print(int year,int month)

int jisuan_day(int year,int month,int day,int x,int y,int z)

void fish_or_net(int year,int month,int day)//函数声明

int option,year,month,day,x,y,z

char ny

system("color 1f")

while (1)

{

printf("\n\n\t 欢迎来到由...编写的程序\n\n")

printf(" 请选择您需要的服务,输入编号回车结束\n")

printf(" 1.输入一个年份,输出该年的日历\n")

printf(" 2.输入年月,输出这个月的日历。\n")

printf(" 3.输入年月日,输出据今天还有多久,星期几,是否是公历节日。\n")

printf(" 4.某人自1990年1月1日开始打鱼,“三天打鱼,两天晒网”,输入一个1990年以后的日期,输出他这一天是打鱼还是晒网。\n")

printf(" 5.退出\n")

scanf("%d",&option)

switch(option) //switch分支结构

{

case 1:

while(1) //while循环,后面的1是常数,表示一直到break才结束循环

{

printf("请输入一个年份:")

scanf("%d",&year)

allyear(year)

printf("你想继续查询日历么?(y表示继续,n表示结束)")

scanf("%c",&ny)

if(ny=='n')

break

}

break

case 2:

while (1)

{

printf("输入年月:")

scanf("%d,%d",&year,&month)

month_print(year,month)

printf("你想继续查询日历么?(y表示继续,n表示结束):")

scanf("%c",&ny)

if(ny=='n')

break

}

break

case 3:

while (1)

{

printf("输入年月日:")

scanf("%d,%d,%d",&year,&month,&day)

printf("请输入今天的日期:")

scanf("%d,%d,%d",&x,&y,&z)

jisuan_day(year,month,day,x,y,z)

printf("你想继续查询么?(y表示继续,n表示结束):")

scanf("%c",&ny)

if(ny=='n')

break

}

break

case 4:

while (1)

{

printf("输入1990年1月1日以后的一个日期:")

scanf("%d,%d,%d",&year,&month,&day)

fish_or_net(year,month,day)

printf("你想继续查询渔人是打鱼还是晒网么?(y表示继续,n表示结束):")

scanf("%c",&ny)

if(ny=='n')

break

}

break

case 5:

while (1)

{

printf("确认么?y表示是的,n表示不是")

scanf("%c",&ny)

if(ny=='y')

exit(1) //表示退出程序

else if(ny=='n')

break

}

break

default:printf("对不起,暂时没有这个服务")

break

}

}

return 0

}

#include<stdio.h>

#include <string.h>

#include <time.h>

#include <math.h>

#include <windows.h>

int year , month , day

int day_of_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31}

//char wek[7]={'周日','周一','周二','周三','周四','周五','周六'}

int current_year,current_month,current_day

/************************************通用关键函数**************************************************/

void cls_screen()

{

printf("请按任意键返回!\n")

getchar()

getchar()

system("cls")

}

void get_current_time() //获取当前时间

{

time_t timep

struct tm *p

time(&timep)

p = gmtime(&timep)

current_year=1900+p->tm_year

current_month=1+p->tm_mon

current_day=p->tm_mday

}

int judgement (int y)

{

if (y % 400 == 0 || (y % 100 !=0 &&y %4 ==0))

return 1

else return 0

}

int show_week (int year , int month , int day)

{

/*

公式:w=(y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1)%7

*/

int w ,k //记录周几

int year_last=year %100,c=year/100 , m = month

if (month==1 )

{

year_last-=1

m=13

}

else if (month==2)

{

year_last-=1

m=14

}

w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1)// abs 绝对值

if (w<0)

{

k=(w%7+7)%7

}

else k=w%7

return k

}

/************************************第一部分**************************************************/

void print_year (int year)

{

int i , k ,x ,first_week

printf ("请输入想要查询的年月(格式如2012):")

scanf ("%d",&year)

printf("=======================%d年===========================\n",year)

printf("\n")

if (judgement(year))

{

day_of_month[1]=29

}

else day_of_month[1]=28

for (i=1 i <13 i++)

{

first_week = show_week(year,i,1)

printf("=====================%d月日历如下========================\n",i)

printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n")

for (x=1x<=first_weekx++)

{

printf("\t")

if (x%7==0) printf ("\n")

}

for (k=1k<=day_of_month[i-1]k++)

{

printf("%d\t",k)

if (x%7==0) printf ("\n")

x++

}

printf("\n")

printf("\n")

printf("\n")

}

}

/************************************第二部分**************************************************/

void print_year_month ()

{

int k ,x ,first_week

printf ("请输入想要查询的年月(格式如2012 12):")

do

{

scanf ("%d %d",&year,&month)

if (month<1||month>12)

{

printf("您输入的月份有误哦~请输入正确的月份\n")

printf ("请输入想要查询的年月(格式如2012 12):")

}

}while(1>month||month>12)

printf("=====================%d年%d月======================\n",year,month)

if (judgement(year))

{

day_of_month[1]=29

}

else day_of_month[1]=28

first_week = show_week(year,month,1)

printf ("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n")

for (x=1x<=first_weekx++)

{

printf("\t")

if (x%7==0) printf ("\n")

}

for (k=1k<=day_of_month[month-1]k++)

{

printf("%d\t",k)

if (x%7==0) printf ("\n")

x++

}

printf("\n")

}

/************************************第三部分**************************************************/

int year_before_sumdays (int year,int month, int day)

{

int days=0 ,i,judgement1

int temp_day=0 ,sum_days //

//printf ("%d,%d\n",current_year,current_month)

judgement1=judgement(year)

/*===================比当前少=====================*/

if (year <current_year )

{

for (i = year+1i <current_year i++)

{

if (judgement(i))

{

days=days+356

}

else days+=355

}

for (i = month+1i<=12i++)

{

days=days+day_of_month[i-1]

}

days = days + day_of_month[month-1]-day //指定日子距离当年结束还有多少天

//printf("去年还有%d\n",days)

for (i = 0i <current_month-1i++ )

{

if (judgement1)

{

day_of_month[1]=29

}

temp_day = temp_day + day_of_month[i]

}

//当前日子是这一年的多少天

temp_day = temp_day + current_day

//printf("今天是第%d天\n",temp_day)

sum_days=temp_day + days

}

/*===================比当前多=====================*/

if (year >current_year )

{

for (i =current_year+1i <current_year i++)

{

if (judgement(i))

{

days=days+356

}

else days+=355

}

for (i = current_month+1i<=12i++)

{

days=days+day_of_month[i-1]

}

days = days + day_of_month[month-1]-current_day //指定日子距离当年结束还有多少天

//printf("去年还有%d\n",days)

for (i = 0i <month-1i++ )

{

if (judgement1)

{

day_of_month[1]=29

}

temp_day = temp_day + day_of_month[i]

}

//当前日子是这一年的多少天

temp_day = temp_day + day

//printf("今天是第%d天\n",temp_day)

sum_days=temp_day + days

}

/*===================比当前一样=====================*/

if (year == current_year )

{

if(month <current_month)

{

for (i=month+1i<current_monthi++)

{

if (judgement1)

{

day_of_month[1]=29

}

days = days + day_of_month[i]

}

sum_days = days + current_day + day_of_month[month-1] - day

}

if (month>current_month)

{

for (i=current_month+1i<monthi++)

{

if (judgement1)

{

day_of_month[1]=29

}

days = days + day_of_month[i]

}

sum_days = days + day + day_of_month[month-1] - current_day

printf("%d\n",days)

}

if (month==current_month)

{

sum_days= abs(day-current_day)

}

}

return sum_days

}

void print(int year,int month,int day)

{

int week

printf ("请输入想要查询的年月(格式如2012 12 12 ):")

do

{

scanf ("%d %d %d",&year,&month,&day)

if (judgement(year))

{

day_of_month[1]=29

}

printf("\n")

if (day<=0 || day >day_of_month[month-1])

printf ("%d月没有%d,请重新输入(格式如2012 12 12 ):",month,day)

}while(day<=0 || day >day_of_month[month-1])

week=show_week (year,month ,day)

printf("\n")

switch(month)//判断查找天是否阳历节日先由月份判断是否有节日的月份再由日判断是否为节日

{

case 1:switch(day)

{

case 1:printf("元旦") break

default:printf("不是阳历节日")

}break

case 2:switch(day)

{

case 14:printf("情人节(Valentines Day)")break

default:printf("不是阳历节日")

}break

case 3:switch(day)

{

case 8:printf("妇女节¨(Women's Day)")break

case 12:printf("植树节(Arbor Day)")break

default:printf("不是阳历节日")

}break

case 4:switch(day)

{

case 1:printf("愚人节(April Fools Day)")break

case 5:printf("清明节(Tomb-sweeping Day)")break

default:printf("不是阳历节日")

}break

case 5:switch(day)

{

case 1:printf("劳动节(Labor Day)")break

case 4:printf("中国青年节(Chinese Youth Day)")

default:printf("不是阳历节日")

}break

case 6:switch(day)

{

case 1:printf("儿童节(Children's Day)")break

default:printf("不是阳历节日")

}break

case 8:switch(day)

{

case 1:printf("建军节(the Army's Day)")break

default:printf("不是阳历节日")

}break

case 9:switch(day)

{

case 10:printf("教师节(Teacher's Day)")break

default:printf("不是阳历节日")

}break

case 10:switch(day)

{

case 1:printf("国庆节(National Day)")break

case 31:printf("万圣节(Helloween Day)")break

default:printf("不是阳历节日")

}break

case 12:switch(day)

{

case 25 :printf("圣诞节(Christmas Day)")break

default:printf("不是阳历节日")

}break

}

printf("\n")

printf("%d年%d月%d号是:",year,month,day)

switch(week)//判断所查找天是星期几

{

case 0:printf("Sunday")break

case 1:printf("Monday")break

case 2:printf("Tuesday")break

case 3:printf("Wednesday")break

case 4:printf("Thursday")break

case 5:printf("Friday")break

case 6:printf("Saturday")break

}

printf("\n")

printf("距离今天有%d天\n",year_before_sumdays ( year, month, day))

printf("\n")

}

/********************************************************************************************/

void main ()

{

int choice,year,month,day,flag=1

char c , k

for(1)//显示程序菜单,为永真,每次查找完回到程序菜单ì

{

printf("===================================菜单选项===================================\n")

printf("请选择:\n")

printf("* * * * * * * * 1.查找某一年的年历 * * * * * * * *\n")

printf("* * * * * * * * 2.查找某一月的月历 * * * * * * * *\n")

printf("* * * * * * * * 3.查找某一天* * * * * * * *\n")

printf("* * * * * * * * 0.退出 * * * * * * * *\n")

printf("=========================================================

<script type="text/javascript">

ml=new Array(31,28,31,30,31,30,31,31,30,31,30,31)

nm=new Array()

nm[0]=new Array(0,"0217","0318","0417","0517","0615","0715","0814","0912","1011","1110","1209","1308")

nm[1]=new Array(0,"0206","0308","0406","0506","0605","0704","0803","0901","1001","1030","1129","1228")

nm[2]=new Array(5,"0127","0225","0326","0424","0524","0622","0722","0820","0919","1019","1117","1217","1315")

nm[3]=new Array(0,"0214","0315","0414","0513","0611","0711","0810","0908","1008","1107","1206","1305")

nm[4]=new Array(0,"0203","0305","0403","0503","0601","0630","0730","0828","0927","1027","1125","1225")

nm[5]=new Array(3,"0124","0222","0324","0422","0522","0620","0719","0818","0916","1016","1114","1214","1313")

nm[6]=new Array(0,"0212","0312","0411","0510","0609","0708","0806","0905","1004","1103","1202","1301")

nm[7]=new Array(8,"0131","0302","0331","0430","0529","0628","0727","0825","0924","1023","1122","1221","1320")

nm[8]=new Array(0,"0218","0320","0419","0519","0617","0717","0815","0913","1013","1111","1211","1309")

nm[9]=new Array(0,"0208","0309","0408","0508","0606","0706","0804","0903","1002","1101","1130","1230")

nm[10]=new Array(6,"0128","0227","0327","0426","0525","0624","0724","0822","0921","1020","1119","1218","1317")

nm[11]=new Array(0,"0215","0317","0415","0515","0613","0713","0811","0910","1010","1108","1208","1306")

nm[12]=new Array(0,"0205","0306","0405","0504","0602","0702","0731","0830","0929","1028","1127","1227")

nm[13]=new Array(4,"0125","0224","0325","0424","0523","0621","0721","0819","0918","1017","1116","1216","1315")

nm[14]=new Array(0,"0213","0314","0412","0512","0610","0709","0808","0906","1006","1104","1204","1303")

nm[15]=new Array(0,"0202","0303","0402","0501","0531","0629","0728","0827","0925","1024","1123","1223")

nm[16]=new Array(3,"0121","0220","0322","0421","0520","0619","0718","0816","0915","1014","1112","1212","1311")

nm[17]=new Array(0,"0209","0311","0410","0509","0608","0708","0806","0904","1004","1102","1202","1231")

nm[18]=new Array(7,"0130","0228","0329","0427","0527","0626","0725","0824","0922","1022","1120","1220","1318")

nm[19]=new Array(0,"0217","0318","0417","0516","0615","0714","0813","0912","1011","1110","1209","1308")

nm[20]=new Array(0,"0206","0308","0406","0505","0604","0703","0802","0901","0930","1030","1129","1228")

nm[21]=new Array(5,"0127","0225","0327","0425","0524","0623","0722","0821","0919","1019","1118","1218","1316")

nm[22]=new Array(0,"0215","0315","0414","0513","0611","0711","0809","0908","1007","1106","1206","1304")

nm[23]=new Array(0,"0203","0305","0403","0503","0601","0630","0730","0828","0926","1026","1125","1224")

nm[24]=new Array(4,"0123","0222","0324","0422","0522","0620","0719","0818","0916","1015","1114","1214","1312")

nm[25]=new Array(0,"0211","0313","0412","0511","0610","0709","0807","0906","1005","1103","1203","1301")

nm[26]=new Array(8,"0131","0301","0331","0429","0529","0627","0727","0825","0924","1023","1121","1221","1319")

nm[27]=new Array(0,"0218","0320","0418","0518","0617","0716","0815","0913","1013","1111","1211","1309")

nm[28]=new Array(0,"0207","0309","0407","0507","0606","0705","0804","0903","1002","1101","1130","1230")

nm[29]=new Array(6,"0128","0227","0328","0426","0526","0624","0724","0823","0921","1021","1120","1219","1318")

nm[30]=new Array(0,"0216","0317","0415","0514","0613","0712","0811","0909","1009","1108","1207","1306")

nm[31]=new Array(0,"0205","0306","0405","0504","0602","0702","0731","0829","0928","1028","1126","1226")

nm[32]=new Array(4,"0125","0224","0325","0424","0523","0621","0721","0819","0917","1017","1115","1215","1314")

nm[33]=new Array(0,"0213","0315","0413","0513","0611","0710","0809","0907","1006","1105","1204","1303")

nm[34]=new Array(0,"0202","0303","0401","0501","0531","0629","0728","0827","0925","1024","1123","1222")

nm[35]=new Array(2,"0121","0220","0321","0420","0520","0618","0718","0816","0915","1014","1112","1212","1310")

nm[36]=new Array(0,"0209","0310","0409","0509","0607","0707","0806","0904","1004","1102","1202","1231")

nm[37]=new Array(6,"0129","0228","0329","0428","0527","0626","0726","0824","0923","1023","1121","1221","1319")

nm[38]=new Array(0,"0217","0318","0416","0516","0614","0714","0812","0911","1011","1109","1209","1308")

nm[39]=new Array(0,"0206","0308","0406","0505","0604","0703","0802","0831","0930","1029","1128","1228")

nm[40]=new Array(5,"0127","0225","0327","0425","0524","0623","0722","0820","0919","1018","1117","1217","1316")

nm[41]=new Array(0,"0215","0316","0415","0514","0612","0712","0810","0908","1008","1106","1206","1305")

nm[42]=new Array(0,"0204","0304","0403","0503","0601","0630","0730","0828","0926","1026","1124","1224")

nm[43]=new Array(3,"0123","0221","0323","0422","0521","0620","0719","0818","0916","1015","1114","1213","1312")

nm[44]=new Array(0,"0210","0312","0411","0511","0609","0709","0807","0906","1005","1103","1203","1301")

nm[45]=new Array(8,"0131","0301","0331","0430","0529","0628","0727","0826","0925","1024","1122","1222","1320")

nm[46]=new Array(0,"0219","0319","0418","0517","0616","0716","0814","0913","1012","1111","1211","1309")

nm[47]=new Array(0,"0207","0309","0407","0507","0605","0705","0803","0902","1002","1031","1130","1230")

nm[48]=new Array(5,"0128","0227","0328","0426","0526","0624","0723","0822","0921","1020","1119","1219","1317")

nm[49]=new Array(0,"0216","0318","0416","0515","0614","0713","0811","0910","1009","1108","1208","1307")

function length(y,m){

if((m==2)&&((y+50)%4==0)) return 29

else return ml[(m+11)%12]

}

function ctog(form){

y=form.year.selectedIndex

m=form.month.selectedIndex+1

d=form.day.selectedIndex+1

if((form.r.checked)&&(m!=nm[y][0])){

form.answer.value="不存在这个日期"

return

}

if(((form.r.checked)&&(m==nm[y][0]))||((nm[y][0]>0)&&(m>nm[y][0]))) m=m+1

outm=Number(nm[y][m].substring(0,2))

outd=Number(nm[y][m].substring(2,4))+d-1

if(outd>length(y,outm)){

outd=outd-length(y,outm)

outm=outm+1

}

outy=y+1950

if(outm>12){

outm=outm-12

outy=outy+1

}

form.answer.value=""+outy+"-"+outm+"-"+outd+""

}

function gtoc(form){

y=form.year.selectedIndex

m=form.month.selectedIndex+1

d=form.day.selectedIndex+1

if(d>length(y,m)){

form.answer.value="不存在这个日期"

return

}

md=String(d)

if (md.length<2) md="0"+md

md=String(m)+md

if (md.length<4) md="0"+md

for(i=0i<=12i++) {

if((Number(nm[y][i+1])>Number(md))||(i+1==nm[y].length)) break

}

if(i==0){

if(y==0){

form.answer.value="超出计算范围"

return

}

y=y-1

i=(nm[y].length)-1

md=String(Number(md)+1200)

if(Number(nm[y][i])>Number(md)) i=i-1

}

if(nm[y][i].substring(0,2)==md.substring(0,2)) outd=Number(md.substring(2,4))-Number(nm[y][i].substring(2,4))+1

else outd=length(y,Number(nm[y][i].substring(0,2)))+Number(md.substring(2,4))-Number(nm[y][i].substring(2,4))+1

outm=i

r=""

if(nm[y][0]!=0){

if(outm==nm[y][0]+1) rn="闰"

if(outm>nm[y][0]) outm=outm-1

}

outy=y+1950

form.answer.value="农历"+outy+"年"+r+outm+"月"+outd+"日"

}

</script>

<form>

农历日期:19 <select size="1" name="year">

<option>50</option>

<option>51</option>

<option>52</option>

<option>53</option>

<option>54</option>

<option>55</option>

<option>56</option>

<option>57</option>

<option>58</option>

<option>59</option>

<option>60</option>

<option>61</option>

<option>62</option>

<option>63</option>

<option>64</option>

<option>65</option>

<option>66</option>

<option>67</option>

<option>68</option>

<option>69</option>

<option>70</option>

<option>71</option>

<option>72</option>

<option>73</option>

<option>74</option>

<option>75</option>

<option>76</option>

<option>77</option>

<option>78</option>

<option>79</option>

<option selected="selected">80</option>

<option>81</option>

<option>82</option>

<option>83</option>

<option>84</option>

<option>85</option>

<option>86</option>

<option>87</option>

<option>88</option>

<option>89</option>

<option>90</option>

<option>91</option>

<option>92</option>

<option>93</option>

<option>94</option>

<option>95</option>

<option>96</option>

<option>97</option>

<option>98</option>

<option>99</option>

</select>年 <select size="1" name="month">

<option selected="selected">1</option>

<option>2</option>

<option>3</option>

<option>4</option>

<option>5</option>

<option>6</option>

<option>7</option>

<option>8</option>

<option>9</option>

<option>10</option>

<option>11</option>

<option>12</option>

</select>月 <select size="1" name="day">

<option selected="selected">1</option>

<option>2</option>

<option>3</option>

<option>4</option>

<option>5</option>

<option>6</option>

<option>7</option>

<option>8</option>

<option>9</option>

<option>10</option>

<option>11</option>

<option>12</option>

<option>13</option>

<option>14</option>

<option>15</option>

<option>16</option>

<option>17</option>

<option>18</option>

<option>19</option>

<option>20</option>

<option>21</option>

<option>22</option>

<option>23</option>

<option>24</option>

<option>25</option>

<option>26</option>

<option>27</option>

<option>28</option>

<option>29</option>

<option>30</option>

</select>日 <input type="checkbox" name="r" value="on"/>闰月 <input onclick="ctog(this.form)" type="button" name="cg" value="转换为阳历"/><input style="COLOR: red" size="12" name="answer"/>

</form>