c语言编程万年历该系统主要包括如下功能: 1. 日历显示功能。该日历能根据系统日期进行初始化,如果没有任

如题所述

#include <stdio.h>
#include <stdlib.h>
int JudgeLeapYear(int);
int MonthDay(int m,int y);
void printHeader(void);
int FirstWeek(int m,int y);
void printMonth(int m);
int main(int argc, char* argv[])
{
int year,month,i,test,week;
printf("Year:");
scanf("%d",&year);
for (month=1; month<=12; month++)
{
test=1;
printMonth(month);
printHeader();
week=FirstWeek(month,year);
if (week < 6)
{
for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
}
for (i = 1; i <= MonthDay(month,year); i++,test++)
{
printf("%d\t",i);
if (test%7==0)
{
putchar('\n');
}
}
putchar('\n');

system("pause");
}
return 0;
}
int JudgeLeapYear(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}
int FirstWeek(int month,int year)
{
if (month<3)
{
month+=12;
year--;
}
return (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}
int MonthDay(int month,int year)
{
int d;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=JudgeLeapYear(year)?29:28;break;
}
return d;
}
void printHeader(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}
void printMonth(int m)
{
switch (m)
{

default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;
case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-26
#include <stdio.h>
#include <stdlib.h>
int JudgeLeapYear(int);
int MonthDay(int m,int y);
void printHeader(void);
int FirstWeek(int m,int y);
void printMonth(int m);
int main(int argc, char* argv[])
{
int year,month,i,test,week;
printf("Year:");
scanf("%d",&year);
for (month=1; month<=12; month++)
{
test=1;
printMonth(month);
printHeader();
week=FirstWeek(month,year);
if (week < 6)
{

for (i=0; i<=week; i++)
{
putchar('\t');
test++;
}
}
for (i = 1; i <= MonthDay(month,year); i++,test++)
{

printf("%d\t",i);
if (test%7==0)
{
putchar('\n');
}
}
putchar('\n');

system("pause");
}
return 0;
}

int JudgeLeapYear(int y)
{
return (y%4==0&&y%100||y%400==0)?1:0;
}

int FirstWeek(int month,int year)
{
if (month<3)
{
month+=12;
year--;
}
return (1+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
}

int MonthDay(int month,int year)
{
int d;
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:d=31;break;
case 4:
case 6:
case 9:
case 11:d=30;break;
case 2:d=JudgeLeapYear(year)?29:28;break;
}
return d;
}

void printHeader(void)
{
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t\n","Sun","Mon","Tue","Wed","Thur","Fri","Sat");
}

void printMonth(int m)
{
switch (m)
{

default:
case 1:puts("===January===");break;
case 2:puts("===February===");break;
case 3:puts("===March===");break;
case 4:puts("===April===");break;
case 5:puts("===May===");break;
case 6:puts("===June===");break;
case 7:puts("===July===");break;

case 8:puts("===August===");break;
case 9:puts("===September===");break;
case 10:puts("===October===");break;
case 11:puts("===November===");break;
case 12:puts("===December===");break;
}
}望采纳
相似回答