用C语言做一个万年历~~~紧急啊求代码

2025年03月13日 05:33
有1个网友回答
网友(1):

# include

# define N 2012

int main()

{ int year_(int x);

int month_(int x,int y);

void p_(int x,int y,int z);

int year,month,year_days,month_days,sum_days;

for(;;)

{

for(;;)

{ printf("请输入需要查寻的年份:");

scanf("%d",&year);

if(year>=1990)

break;

}

for(;;)

{ printf("请输入需要查寻的月份:");

scanf("%d",&month);

if(month>0&&month<13)

break;

}

year_days=year_(year);

printf("year_days=%3d\n",year_days);

month_days=month_(month,year);

printf("month_days=%3d\n",month_days);

if(year>=N)

sum_days=year_days+month_days;

else

sum_days=year_days-month_days;

p_(sum_days,month,year);

}

return 0;

}

int year_(int x)//判断期间有几个闰年并且求出期间天数 功能函数 有参 有返回值

{ int i=N;

int m,j=0,k=0,z=-1;

if(x-i==0)

z=0;

else

if(x-i>0)

{ for(m=i;m<=x;m++)

if(m%4==0||m%400==0)

++j;

z=j*366+(x-i-j)*365;

}

else

{ for(m=x;m
if(m%4==0||m%400==0)

++k;

z=k*366+(i-x-k)*365;

}

return z;

}

int month_(int x,int y)//判断月份并计算天数 功能函数 有参 有返回值

{ int z=0;

switch(x)

{ case 1 : z= 0; break;

case 2 : z= 31; break;

case 3 : z= 31+28; break;

case 4 : z= 31+28+31; break;

case 5 : z= 31+28+31+30; break;

case 6 : z= 31+28+31+30+31; break;

case 7 : z= 31+28+31+30+31+30; break;

case 8 : z= 31+28+31+30+31+30+31; break;

case 9 : z= 31+28+31+30+31+30+31+31; break;

case 10 : z= 31+28+31+30+31+30+31+31+30; break;

case 11 : z= 31+28+31+30+31+30+31+31+30+31; break;

case 12 : z= 31+28+31+30+31+30+31+31+30+31+30; break;

}

if(x>2&&(y%4==0||y%400==0))

return z+1;

else

return z+0;

}

void p_(int x,int y,int z)//输出函数

{ int i,j,monthdays;

if(z%4!=0||z%400!=0)

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)

monthdays=31;

else

if(y==2)

monthdays=28;

else

monthdays=30;

else

if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)

monthdays=31;

else

if(y==2)

monthdays=29;

else

monthdays=30;

if(z>=N)

j=x%7;

else

j=7-x%7;

printf("%5s%5s%5s%5s%5s%5s%5s\n","日"," 一","二","三","四","五","六");//根据系统不一样 自己调节间距保持和日期对其

for(i=0;i
printf("%5s"," ");

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

{ printf("%5d",i);

if((j+i)%7==0)

printf("\n");

}

printf("\n");

printf("\n");

}