天下收藏大清铜币视频:用tc链表编制日历

来源:百度文库 编辑:高校问答 时间:2024/05/10 11:52:15
跪求 用tc链表编制日历

#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define ESC 0x1b//定义热键
#define UP 0x48
#define DOWN 0x50
#define LEFT 0x4b
#define RIGHT 0x4d
#define PGUP 0x49
#define PGDN 0x51
#define DEL 0x53

void clear(int x1,int y1,int x2,int y2,int c);//清屏函数

void main()
{
int y,m,d,k,r,i,p,h,l,tj=1;
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};//每个月的天数
char *b[]={"Sun","Mon","Tue","Wed","Thr","Fri","Sat"};//每个星期的名称
char buff[960];
struct date sysdate;
/* 取系统日期和屏幕信息 */
getdate(&sysdate);
y=sysdate.da_year;
m=sysdate.da_mon;
l=wherex();//保存光标位置
h=wherey();
gettext(21,1,59,11,buff);//保存屏幕信息
_setcursortype(_NOCURSOR);//关闭光标
while(tj)
{
clear(21,1,59,11,BLUE);
gotoxy(34,2);
textcolor(WHITE);
cprintf("%d年%d月日历",y,m);
a[1]=((y%4==0&&y%100!=0)||(y%400==0))?29:28;//置2月份的天数
d=y+(y-1)/4-(y-1)/100+(y-1)/400;
if(m>1)
{
for(i=1;i<=m-1;++i)
d=d+a[i-1];
}
k=d%7;
clear(21,3,59,3,GREEN);
for(i=0;i<=6;++i)
{
gotoxy(5*i+24,3);
if(i==0||i==6)
textcolor(RED);//星期六、星期天用红色显示
cputs(b[i]);
textcolor(WHITE);//其余用白色显示
}
textbackground(BLUE);
r=4;
for(i=1;i<=a[m-1];++i)
{
gotoxy(5*k+25,r);
if(k==0||k==6)//如果那一天是星期六、星期天,用红色显示
textcolor(RED);
cprintf("%2d",i);
textcolor(WHITE);//其余用白色显示
++k;
if(k>6)//如果打印完一个星期
{
k=0;//设为星期天
++r;//换行
}
}
clear(21,10,59,10,GREEN);
gotoxy(27,10);
cprintf("↑/↓:年 ←/→:月 ESC:退出");
p=getch();
switch(p)
{
case UP:--y;
break;
case DOWN:++y;
if(y<1840)
y=1840;
break;
case PGUP:y-=20;
break;
case PGDN:y+=20;
if(y<1840)
y=1840;
break;
case RIGHT:++m;
if(m>12)
m=1;
break;
case LEFT:--m;
if(m<1)
m=12;
break;
case DEL:y=sysdate.da_year;
m=sysdate.da_mon;
break;
case ESC:tj=0;
}//end switch
}//end while
puttext(21,1,59,11,buff);//恢复屏幕信息
gotoxy(l,h);//恢复光标位置
_setcursortype(_NORMALCURSOR);//打开光标
}

/* 清屏函数 */
void clear(int x1,int y1,int x2,int y2,int c)
{
int p,q;
textbackground(c);//设置背景色
for(p=y1;p<=y2;++p)
{
for(q=x1;q<=x2;++q)
{
gotoxy(q,p);
cprintf(" ");
}
}
}