C语言,求助万年历打印问题
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TRUE 1
/*主函数*/
void main()
{
int year;
int PutinYear(void);
year = PutinYear ();
void GetMonth(int year);
GetMonth (year);
}
/*输入年份*/
int PutinYear(void)
{
int year;
while(TRUE)
{
printf("请输入年份(1-3000) : ");
scanf("%d", &year);
if(year > 0&&year<3001)
{
return year;
}
}
}
/*判断是否为闰年*/
int LeapYear(int year)
{
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
/*调用每个月份*/
void GetMonth (int year)
{
int month;
for(month = 1; month <= 12; month++)
{
void PrintMonth(int month, int year);
PrintMonth(month, year);
printf("\n");
}
}
enum{Sunday, Monday, Tuesday, Wednesday,
Thursday, Friday, Saturday};
/*打印万年历*/
void PrintMonth(int month, int year)
{
int weekday, ndays, day;
char *MonthName(int month);
printf(" %s", MonthName(month));/*打印开头一行的月份*/
printf("\n 周日 周一 周二 周三 周四 周五 周六\n");
int MonthDays(int year, int month);
ndays = MonthDays(year, month);
int FirstDay(int year, int month);
weekday = FirstDay(year, month);
void Blank(int weekday);
Blank(weekday);
for(day = 1; day <= ndays; day++)
{
printf(" %4d", day);
if(weekday == Saturday)/* 是星期六就打印换行*/
{
printf("\n");
}
weekday = (weekday + 1) % 7;/* 计算是星期几*/
}
if(weekday != Sunday)
printf("\n");
getch();
}
/*输出每个月份名*/
char *MonthName(int month)
{
char *name[] =
{
"Illegal month", "一月", "二月", "三月",
"四月", "五月", "六月", "七月", "八月",
"九月", "十月", "十一月", "十二月"
};
return (month < 1 || month > 12) ? name[1] : name[month];
}
/*输出每个月份的天数*/
int MonthDays(int year, int month)
{
int LeapYear(int year);
switch(month)
{
case 2 :
if(LeapYear(year))/* 如果是闰年*/
{
return 29;
}
return 28;
case 4 : case 6 : case 9 : case 11 : return 30;
default : return 31;
}
}
/*推算星期*/
int FirstDay(int year, int month)
{
int i, weekday;
weekday = Monday;
for(i = 1; i < year; i++)
{
weekday = (weekday + 365) % 7;
if(LeapYear(i))/* 如果是闰年就加1*/
{
weekday = (weekday + 1) % 7;
}
}
for(i = 1; i < month; i++)
{
int MonthDays(int year, int month);
weekday = (weekday + MonthDays(year, i)) % 7;
}
return weekday;
}
void Blank(int weekday)
{
int i;
for(i = 0; i < weekday; i++)
{
printf(" ");
}
}
这是我编写的万年历 输出时是一次输出一个月 需要改成一次输出一排(两个月为一排) 按回车后再显示下一排 直到显示完12个月
如: 1月 2月
3月 4月
求解~~~