搜索
查看: 4584|回复: 4
打印 上一主题 下一主题

[转贴] C语言万年历代码

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-3 23:45:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[mw_shl_code=c,true]
#include <stdio.h>
main()
{
void print_head(int x,int y);       /*打印头文件*/
void print_month(int x,int y);      /*打印月历*/
int days_of_month(int x,int y);     /*计算指定年月的天数*/
int leap(int x,int y);              /*计算指定年月1号是星期几*/
int i,days,year,month,firstday;
char choose;
    do
       {printf ("\n\nplease input the year(0000~9999):\n\n");
        scanf ("%d",&year);
   if (year<0||year>9999) printf ("WANNING:ERROR,please input again!");}
    while (year<0||year>9999);
    printf ("\n\n");
    do
       {printf ("please input the month(0~12)\n\n\n");
        scanf ("%d",&month);
   if (month<=0||month>12) printf ("WANNING:ERROR,please input again!");}
    while (month<=0||month>12);
    printf ("\n\n");
    days=days_of_month(year,month);       /*调用函数*/
    firstday=leap(year,month);
    print_head(year,month);
    print_month(firstday,days);
    choose=getchar();
    printf ("\n\n\n");
    printf("would you like to continue(y/n):\n\n");  
    scanf("%c",&choose);
    if (choose=='y'||choose=='Y') main();
}

days_of_month(int x,int y)
{
int z;
switch (y)
{case 1:
  case 3:
  case 5:
  case 7:
  case 8:
  case 10:
  case 12: z=31;break;
  case 4:
  case 6:
  case 9:
  case 11: z=30;break;
  case 2:
   {if ((x%4==0&&x%100!=0)||(x%400==0)) z=29;
     else z=28;break;
   }
   }
return z;
}

leap(int x,int y)
{
int z,i,moday;
z=(x+(x-1)/4-(x-1)/100+(x-1)/400)%7;
for (i=1;i<y;i++)
  {moday=days_of_month(x,i);       /*钳套调用函数*/
   z=(z+moday)%7;
  }
return z;
}

void print_head(int x,int y)
{
printf ("\n\n********************************************************************************\n\n");
printf ("\t\t\t\t%d       %d\n\n",x,y);
printf ("\t\t\t SUN MON TUE WED THU FRI SAT\n");
printf ("\t\t\t");
}

void print_month(int x,int y)
{
int i;
char space[7]={' '};
for (i=1;i<=x;i++)
    printf ("%4c",space);
for (i=1;i<=y;i++)
    {if ((i+x)%7==1) printf ("\n\t\t\t%4d",i);
      else printf ("%4d",i);}
printf ("\n\n********************************************************************************\n\n");
} [/mw_shl_code]
沙发
发表于 2012-11-9 09:49:09 | 只看该作者
好玩。。。
板凳
发表于 2012-12-18 11:54:36 | 只看该作者
有点意思啊
地板
发表于 2016-1-23 14:01:00 | 只看该作者
有点意思
5#
发表于 2016-4-16 22:02:47 | 只看该作者
不错 学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表