万年历

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

/*

Name: calendar.c version 1.0

Author: Lynxcn(x-bit)

Description: 1752.10-9999.12

Date: 03-31-2004

Copyright: x-bit@163.com

*/

#include <stdio.h>

int main(void)

{

int year, month;

int leap(int year);

int get_days(int year, int month, int date);

int get_week(int year, int month, int date);

void calendar(int year, int month);

printf("Enter a year: ");

scanf("%d", &year);

while(year<0)

{

printf("! illegal year value: year must > 0\n");

printf("Enter a year: ");

scanf("%d", &year);

}

printf("Enter a month: ");

scanf("%d", &month);

while(month<1||month>12)

{

printf("! illegal month value: use 1-12\n");

printf("Enter a month: ");

scanf("%d", &month);

}

calendar(year, month);

return 0;

}

/* 判断润年 */

int leap(int year)

{

int leap=0;

if(year%4==0&&year%100!=0||year%400==0)

leap=1;

return(leap);

}

/* 天数 */

int get_days(int year, int month, int date)

{

int i, days=0;

int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

if(leap(year))

m[2]=29;

for(i=1;i<month;i++)

days+=m[i];

days+=date;

return(days);

}

/* 星期几 */

int get_week(int year, int month, int date)

{

int week;

week=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400;

week+=get_days(year, month, date);

week%=7;

return(week);

}

/** calendar **/

void calendar(int year, int month)

{

int i, j;

int m[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

if(leap(year))

m[2]=29;

printf("\n%d.%d", year, month);

printf("\n***************************\n");

printf("Sun Mon Tue Wen Thu Fri Sat \n");

for(j=1; j<=get_week(year, month, 1)*4; j++)

printf(" ");

for(i=1;i<=m[month];i++)

{

printf("%d",i);

if(i>=10)

printf(" ");

else

printf(" ");

if(get_week(year, month, i)==6)

printf("\n");

}

printf("\n***************************\n");

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航