万年历程序中华万年历小程序
本文目录一览:
- 1、用vb编写万年历小程序
- 2、C语言程序设计 万年历查询程序。
- 3、万年历查询程序用C语言编写
- 4、用C语言怎么编写万年历
用vb编写万年历小程序
用VB做万年历,非常关键点就是农历写法,参考代码如下:
#RegiON " 返回农历 "
'返回农历
'cCalendar.MaxSupportedDateTime 返回支持的最大日期,即2101-1-28
'cCalendar.MinSupportedDateTime 返回支持的最小日期,即190-2-19
Private cCalendar As New System.Globalization.ChineseLunisolarCalendar
Public Function PubFunGet_CNDate(ByVal sDateTime As Date) As String
cCalendar = New System.Globalization.ChineseLunisolarCalendar
Dim lyear As Integer = cCalendar.GetYear(sDateTime)
Dim lmonth As Integer = cCalendar.GetMonth(sDateTime)
Dim lday As Integer = cCalendar.GetDayOfMonth(sDateTime)
Dim lweek As Integer = cCalendar.GetDayOfWeek(sDateTime)
'获取闰月, 0 则表示没有闰月
Dim leapMonth As Integer = cCalendar.GetLeapMonth(lyear)
Dim isleap As Boolean = False
If (leapMonth 0) Then
If (leapMonth = lmonth) Then
'闰月
isleap = True
lmonth = lmonth - 1
ElseIf (lmonth leapMonth) Then
lmonth = lmonth - 1
End If
End If
Return String.Concat(GetLunisolarYear(lyear), IIf(isleap = True, "闰年", "年"), GetLunisolarMonth(lmonth), "月", GetLunisolarDay(lday))
End Function
'十天干
Private tiangan As String() = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"}
'十二地支
Private dizhi As String() = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}
'十二生肖
Private shengxiao As String() = {"鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"}
'农历月
Private months As String() = {"正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二(腊)"}
'农历日
Private days1 As String() = {"初", "十", "廿", "三"}
Private days As String() = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}
'返回农历年(天干 地支 生肖)
Private Function GetLunisolarYear(ByVal year As Integer) As String
GetLunisolarYear = ""
If (year 3) Then
Dim tgIndex As Integer = (year - 4) Mod 10
Dim dzIndex As Integer = (year - 4) Mod 12
Return tiangan(tgIndex) dizhi(dzIndex) "[" shengxiao(dzIndex) "]"
End If
'无效的年份!
End Function
'返回生肖
Private Function GetShengXiao(ByVal sDateTime As Date) As String
Return shengxiao(cCalendar.GetTerrestrialBranch(cCalendar.GetSexagenaryYear(sDateTime)) - 1)
End Function
'返回农历月
Private Function GetLunisolarMonth(ByVal month As Integer) As String
GetLunisolarMonth = ""
If (month 13 AndAlso month 0) Then
Return months(month - 1)
End If
'无效的月份!
End Function
'返回农历日
Private Function GetLunisolarDay(ByVal day As Integer) As String
GetLunisolarDay = ""
If (day 0 AndAlso day 32) Then
If (day 20 AndAlso day 30) Then
Return String.Concat(days1((day - 1) \ 10), days((day - 1) Mod 10))
Else
Return String.Concat(days((day - 1) \ 10), days1(1))
End If
End If
'无效的日!
End Function
#End Region
C语言程序设计 万年历查询程序。
实验名称:万年历的查询及打印
【内容】:设计一个查询并打印万年历的程序。
【步骤】:
1.
画出程序流程图;
2.
编写程序;
3.
调试程序,对调试过程中出现的问题进行分析,找出错误的原因并予改正;
4.
写出通过调试并修改正确的原程序。
【要求】:
1.
程序运行后,首先在屏幕上显示主菜单:
1.
查询某年某月某日是星期几
2.
查询某年是否是闰年
3.
打印某年的全年日历
4.
退出
2.
在主菜单中输入1后,显示:
“请输入年月日(XXXX,XX,XX)”
运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?
如果输入Y,则重新显示
“请输入年月日(XXXX,XX,XX)”,否则回到主菜单。
3.
在主菜单中输入2后,显示:
“请输入要查哪一年?(XXXX)”
运行后输出:XXXX年是(否)是闰年,是否继续查询(Y/N)?
如果输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,否则回到主菜单。
4.
在主菜单中输入3后,显示:
“请输入要打印的年份(XXXX)”
运行后输出XXXX年的日历,格式为:
XXXX
X(月数)
1
2
3
4
5
6
S
M
T
W
T
F
S
x
x
x
x
x
x
x
x
x
x
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
X(月数)
1
2
3
4
5
6
S
M
T
W
T
F
S
x
x
x
x
x
x
x
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
xx
.
.
.
.
.
运行完后显示:“是否继续打印(Y/N)?”
如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。
5.
在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”
如果输入Y,结束程序运行,否则重新显示主菜单。
【提示】:
1.
闰年计算:满足下列二者之一,是闰年:
能被4整除,但不能被100整除;
能被4整除,且能被400整除。
2.闰年的二月是29天,平年的二月是28天
3.星期几的计算:
S=X-1+(X-1)/4+(X-1)/100+(X-1)/400+C
X是年份,C是该年从元旦开始到到这一日的天数。
S/7的余数既是星期数
例1:1982年12月26日
由于1982年不是闰年(不能被4整除),所以该年的二月是28天。
C=31+28+31+30+31+30+31+31+30+31+30+26=360
(1月到11月的天数+12月的实际天数)
S=1982-1+(1982-1)/4+(1982-1)/100+(1982-1)/400+360=2821.3925
S/7=2821/7=403
余数为0,所以该日是星期天。
例2:2000年3月8日
由于2000年是闰年(能被4整除,又能被100和400整除),所以该年的二月是29天。
C=31+29+8=68
(1月到2月的天数+3月的实际天数)
S=2000-1+(2000-1)/4+(2000-1)/100+(2000-1)/400+68=2551.757
S/7=2551/7=364
余数为3,所以该日是星期三。
万年历查询程序用C语言编写
网上找的部分带我,我又修改了一下,现在基本满足lz的要求。
手头没有Wintc用vc测的,不过没用到什么vc特有的东西,应该可以的。
#include stdio.h
#include stdlib.h
#include conio.h
void DayOfWeek()
{
int rtnDay;
int y,m,d;
char ch;
while (1)
{
printf("请输入年月日(xxxx,xx,xx): ");
scanf("%d,%d,%d", y, m, d);
fflush(stdin);
rtnDay = (3*y-(7*(y+(m+9)/12))/4+(23*m)/9+d+17-((y+(m3?-1:0))/100+1)*3/4) % 7;
printf("%04d年%02d月%02d日 是 星期%d\n", y, m, d, rtnDay?rtnDay:7);
printf("继续查询(y/n)");
ch = getchar();
if(ch != 'y' ch != 'Y')
break;
}
}
void GetMonth(int D, int md, int n)
{
int N ,m,d,y,c,Wd;
int i,maxday,i1;
if(md=13||md=0)
printf("HAVE WRONG!");
else
{
for(i1=0;;md++,i1++)
{
if(md==0)
{
md=12;
D-=1;
}
else
if(md==13)
{
md=1;
D+=1;
}
m=md;
printf("\n============%d,%2d============\n",D,md);
if(0mm=12)
{
switch(m)
{
case 1:maxday=31;break;
case 2:if(D%4==0D%100!=0||D%400==0)
maxday=29;
else
maxday=28;
break;
case 3:maxday=31;break;
case 4:maxday=30;break;
case 5:maxday=31;break;
case 6:maxday=30;break;
case 7:maxday=31;break;
case 8:maxday=31;break;
case 9:maxday=30;break;
case 10:maxday=31;break;
case 11:maxday=30;break;
case 12:maxday=31;break;
default:printf("HAVE WRONG");
}
if(0mm=2)
{
N=D-1;
m=m+10;
}
else
{
N=D;
m=m-2;
}
c=N/100;
y=N%100;
Wd=((1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7;
printf(" SUN MOU TUE WED TUR FRI SAT\n");
for(i=0;iWd;i++)
printf("%4c",' ');
for(d=1;d=maxday;d++)
{
printf("%4d",d);
Wd=(Wd+1)%7;
if(Wd==0)
printf("\n");
}
}
else
printf("HAVE WRONG!");
if(i1==n)
break;
}
}
}
void MonthOfYear()
{
char ch;
int y, m;
while (1)
{
printf("请输入年月(xxxx,xx): ");
scanf("%d,%d", y, m);
fflush(stdin);
GetMonth(y, m, 0);
printf("\n继续查询(y/n)");
ch = getchar();
if(ch != 'y' ch != 'Y')
break;
}
}
void GetYear()
{
char ch;
int y;
while (1)
{
printf("请输入年: ");
scanf("%d", y);
fflush(stdin);
GetMonth(y, 1, 11);
printf("\n继续查询(y/n)");
ch = getchar();
if(ch != 'y' ch != 'Y')
break;
}
}
int main()
{
char ch;
while(1)
{
system("cls");
printf("1.查询星期\n");
printf("2.查询月份\n");
printf("3.显示一年\n");
printf("4.退出程序\n");
ch = getchar();
fflush(stdin);
switch(ch)
{
case '1':
DayOfWeek();
break;
case '2':
MonthOfYear();
break;
case '3':
GetYear();
break;
case '4':
printf("是否退出(y/n)");
ch = getchar();
fflush(stdin);
if(ch == 'y' || ch == 'Y')
exit(0);
break;
}
}
}
另外,虚机团上产品团购,超级便宜
用C语言怎么编写万年历
1、首先下载安装Notepad++,这是一款免费的且能够编辑C语言的软件。
2、然后下载安装tdm-gcc,这是为了给电脑配置环境变量,以便能够编译C语言的。
3、在安装完以上两款软件后,还要配置一下环境变量。
4、然后开始编辑C语言万年历,首先要判断一个年份是闰年还是平年,用一个子程序来做:
5、然后就开始写主程序:首先用scanf得到一个年份,在判断这个年份是平年还是闰年后用printf在CMD中打出来。
6、在编写完成后,在Notepad++界面下按下F5,在输入框中输入:
cmd /k gcc -o "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" CLS "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" PAUSE EXIT
7、最后点击运行,会弹出CMD,在里面输入年份后回车:例如输入2017,然后回车,就会生成2017年的万年历了!
万年历程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于中华万年历小程序、万年历程序的信息别忘了在本站进行查找喔。
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~