c语言风景日历制作系统,初学,C语言日历制作

VC编译实现万年历的输出

具体功能:输入任意年份,输出日历(主要是对其星期的排列问题)。

主要算法:基姆拉尔森计算公式(计算任意日期的星期 )

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7+1。

具体实现方面:

先预备月份(注意闰年,加上闰年判断函数),

最需注意的是日期输出部分的问题,真正的实现就是靠输出间隔来进行星期的确定。

代码:

#include

#include

#include

#include

#define PI 3.1415926535

int week_analysis(int y,int m,int d)//计算星期

{

/*基姆拉尔森计算公式

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7计算任意日期的星期 */

if(m==1||m==2)

{

y-=1;

m+=12;

}

return((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1);

}

int leap_year(int y)//闰年判断函数

{

return(y%4==0&&y%100||y%400==0);

}

void printmonth(int j)

{

switch(j+1)//注意j的数值问题

{

case 1:

printf("Jan\n");break;

case 2:

printf("Feb\n");break;

case 3:

printf("Mar\n");break;

case 4:

printf("Apr\n");break;

case 5:

printf("May\n");break;

case 6:

printf("Jun\n");break;

case 7:

printf("Jul\n");break;

case 8:

printf("Aug\n");break;

case 9:

printf("Sep\n");break;

case 10:

printf("Oct\n");break;

case 11:

printf("Nov\n");break;

case 12:

printf("Dec\n");break;

}

}

int main()

{

int y;

int date[2][12]={{31,28,31,30,30,30,31,31,30,31,30,31},

{31,28,31,30,3,30,31,31,30,31,30,31}};//储存两组月份数据(闰年)

int i=0,j=0,k=0,mv,l;//mv为偏移量

printf("Please input the year whose calendar you want to know: ");

scanf("%d",&y);

i=leap_year(y);

printf("---------the calendar of %d ------------\n",y);

printf(" MON TUE WED THU FRI SAT SUN \n");

for(j=0;j<=12;j++)

{

mv=week_analysis(y,j+1,1);//注意j的数值问题

printmonth(j);

for(l=1;l

{

printf(" ");

}

for(k=1;k<=date[i][j];k++)

{

printf("%4d",k);//注意输出本身的偏移量

if((mv+k-1)%7==0)

{

printf("\n");

}

}

printf("\n");

}

printf("Press any key to end.\n");

_getch();

return 0;

}

调试结果:

5288916.htm

035a4271d1124db4a19eaa5dd0389448.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值