📄 万年历.txt
字号:
#include "stdio.h"
#include "dos.h"
#include "conio.h"
int get_now_year() /* 得到当前计算机的年*/
{
struct date y;
getdate(&y);
return y.da_year;
}
int get_now_month() /* 得到当前计算机的月*/
{
struct date m;
getdate(&m);
return m.da_mon;
}
int get_now_day() /* 得到当前计算机的号*/
{
struct date d;
getdate(&d);
return d.da_day;
}
leap_non_year(int year) /*判断是否是闰年,是返回1,平年返回2*/
{
if((year%4==0)&&(year%100!=0))
return 1;
if(year%400==0)
return 1;
else return 2;
}
month_day(int year,int month) /* 得到这个月有几天*/
{
switch(month)
{
case 2:
{
if(year==1)
return 29;
else
return 28;
}
case 1:; case 3:; case 5:;case 7:; case 8:; case 10:; case 12: return 31;
case 4:; case 6:; case 9:;case 11: return 30;
}
}
int wnl(int year,int month,int day,int leap) /*计算要查找日期是星期几*/
{
int week,weektable;
int hundredyear,y; /*定义百年和年*/
hundredyear=year/100;
y=year%100;
if(leap==1)
switch(month)
{
case 1: weektable=3; break;
case 2: weektable=6; break;
case 3: weektable=0; break;
case 4: weektable=3; break;
case 5: weektable=5; break;
case 6: weektable=1; break;
case 7: weektable=3; break;
case 8: weektable=6; break;
case 9: weektable=2; break;
case 10: weektable=4; break;
case 11: weektable=0; break;
case 12: weektable=2; break;
}
else if(leap==2)
switch(month)
{
case 1: weektable=4; break;
case 2: weektable=0; break;
case 3: weektable=0; break;
case 4: weektable=3; break;
case 5: weektable=5; break;
case 6: weektable=1; break;
case 7: weektable=3; break;
case 8: weektable=6; break;
case 9: weektable=2; break;
case 10: weektable=4; break;
case 11: weektable=0; break;
case 12: weektable=2; break;
}
week=(hundredyear%4*5+y+y/4+weektable+day+2)%7;
return week;
}
show() /* 显示最上面的日期和星期*/
{
int y,m,d;
y=get_now_year();
m=get_now_month();
d=get_now_day();
printf("\t\t\t%d-%d-%d\n",y,m,d);
printf(" Mon Tue Wed Thu Fri ");
textcolor(14);
cprintf(" Sat ");
textcolor(12);
cprintf(" Sun\n");
clreol();
}
show_now()/* 把日期和星期对应,但是第一排总是对不齐,请大虾帮忙*/
{
int i,j;
int y,m,d;
int week,leap,day,days=1;
char ch=32;
y=get_now_year();
m=get_now_month();
d=get_now_day();
show();
leap=leap_non_year(y);
day=month_day(leap,m);
week=wnl(y,m,1,leap);
if(week==0)
week=7;
for(i=1;i<week;i++)
printf("%12c",ch);
for(i;i<=day+week-1;i++)
{
if(i%7==0)
{
textcolor(12);
cprintf("%7d\r\n\n",days++);
textcolor(15);
}
else
{
if(days==d)
{
textcolor(10);
cprintf("%7d",days++);
textcolor(15);
}
else
printf("%7d",days++);
}
}
printf("\n\n");
}
find_year()/* 输入要查找年月日是星期几*/
{
int y,m,d;
int leap,month_day,week;
printf("input year month day:(2000 1 1)");
scanf("%d%d%d",&y,&m,&d);
leap=leap_non_year(y);
week=wnl(y,m,d,leap);
if(week==0)
week=7;
switch(week)
{
case 1: printf("%d-%d-%d is Mon\n",y,m,d); break;
case 2: printf("%d-%d-%d is Tue\n",y,m,d); break;
case 3: printf("%d-%d-%d is Wed\n",y,m,d); break;
case 4: printf("%d-%d-%d is Thu\n",y,m,d); break;
case 5: printf("%d-%d-%d is Fri\n",y,m,d); break;
case 6: printf("%d-%d-%d is Sat\n",y,m,d); break;
case 7: printf("%d-%d-%d is Sun\n",y,m,d); break;
default :printf("error!");
}
}
input_time()/* 一个菜单选择*/
{
int num;
printf("\t1--find_year\t2--set_time\n\t3--quit\n\tplease input 1-3:");
scanf("%d",&num);
switch(num)
{
case 1: find_year(); break;
/*case 2: set_time(); break; 这个函数是用来修改当前计算机的年月日的,但偶还不会,请大虾指点*/
case 3: exit(1);
default : printf("input error num\n");
}
}
main()
{
clrscr();
show_now();
input_time();
getch();
clrscr();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -