You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# define MAIN_H
# include "stdio.h"
# include "math.h"
# include "stdlib.h"
//获取某一个月的最大天数
int monthday ( int , int ) ;
//判断闰年 ,是返回1, 不是返回0
int isleapyear ( int ) ;
# include <math.h>
int main ( )
{
int year , month , days , weekday ;
int i , d ;
while ( 1 )
{
printf ( " please input the year: \n " ) ;
scanf ( " %d " , & year ) ;
days = year - 1 + ( year - 1 ) / 400 + ( year - 1 ) / 4 - ( year - 1 ) / 100 ; //计算某年第一天是星期几
for ( month = 1 ; month < = 12 ; month + + )
{
printf ( " \n --------%d/%d-------- \n " , year , month ) ;
printf ( " sun \t mon \t tues \t wed \t thur \t fir \t sat \t \n " ) ; //表头
i = 1 ; d = 1 ;
weekday = ( days + 1 ) % 7 ; //求星期几
while ( i < = weekday ) //输出前面的空格
{
printf ( " \t " ) ;
i + + ;
}
while ( d < = monthday ( month , year ) ) //输出日期
{
weekday = ( days + 1 ) % 7 ;
if ( weekday = = 6 ) //最后一个是星期六,输出之后要换行
printf ( " %d \n " , d ) ;
else //不是星期六的输出后不换行
printf ( " %d \t " , d ) ;
if ( d = = monthday ( month , year ) )
printf ( " \n " ) ;
d + + ;
days + + ;
}
}
}
}
# include "math.h"
int monthday ( int month , int year )
{
switch ( month )
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
return 31 ; break ;
case 4 :
case 6 :
case 9 :
case 11 :
return 30 ; break ;
case 2 :
if ( isleapyear ( year ) )
{
return 29 ; //闰年29天
break ;
}
else
{
return 28 ;
break ;
}
}
}
int isleapyear ( int year )
{
if ( ( year % 4 = = 0 ) & & ( year % 100 ! = 0 ) | | ( year % 400 = = 0 ) )
return 1 ;
else
return 0 ;
}