⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 万年历.txt

📁 万年历c实现,简单使用
💻 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 + -