c语言编程万历表,C语言编的年历表

已结贴√

问题点数:20 回复次数:4

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

C语言编的年历表

#include "stdio.h"

int yuetian(int y,int m);

int niantian(int a);

void yuelibiao(int d,int s);

int qiuxingqi(int y,int m);

main()

{

int y,m,d,s;

printf("请输入年份y=");

scanf("%d",&y);

printf("\t\t\t%d年历表",y);

for(m=1;m<=12;m++)                                /*----循环12个月-----*/

{

s=qiuxingqi(y,m);

printf("\n\n  %d月份\n\n",m);

d=yuetian(y,m);

yuelibiao(d,s);

}

}

//==============================================

//函数名:xingqi()

//参数:int y int m

//功能:求出某年某月的一号是星期几

//返回值:s

//==============================================

int qiuxingqi(int y,int m)

{

int x1,x2,i,x;

x1=0;

x2=0;

if(y>=2007)                                       /*----以2007年1月1号为界分两段----*/

{

for(i=y-1;i>=2007;i--)                        /*-----求2007年到y-1年的天数------*/

{

x1=niantian(i)+x1;

}

for(i=m-1;i>0;i--)                            /*------求y年元旦到y年m月的天数---*/

{

x2=yuetian(y,i)+x2;

}

x=x1+x2;                                       /*--------总间隔天数------------*/

x=x%7+1;                                       /*某年某月一号是星期x-----*/

}

else

{

for(i=y;i<2007;i++)                            /*-------------求y年到2007年的天数------*/

{

x1=niantian(i)+x1;

}

for(i=m-1;i>0;i--)                              /*-------求y年元旦到y年m月的天数-------*/

{

x2=yuetian(y,i)+x2;

}

x=x1-x2;                                        /*-----总间隔天数--------*/

if(x%7==0)

x=1;                                        /*------某年某月一号是星期x--*/

else

x=8-x%7;                                    /*--------某年某月一号是星期x-----*/

}

return x;

}

//==============================================

//函数名:yueli()

//参数:int a   int s

//功能:输出月历

//返回值:无

//==============================================

void yuelibiao(int d,int s)

{

int i,j,k;

printf("   一    二    三    四    五    六    天\n");

for(i=1,j=0;i<=d;i++,j++)                    /*---------循环一个月的天数--------*/

{

if(j==0)

{

for(k=s-1;k>0;k--)                   /*---若不存在打印空格-----*/

{

printf("      ");

}

j=j+s;                               /*----将空格个数也算进去确保七天换一行----*/

}

printf("%6d",i);

if(j%7==0)                               /*-----七天换一行-----*/

printf("\n");

}

printf("\n");

}

//=============================================

//函数名:yuetian()

//参数:int y   int m

//功能:求某年某月的天数

//返回值:某年某月的天数 d

//=============================================

int yuetian(int y,int m)

{

int d;

switch(m)

{

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:

{

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

d=29;

else

d=28;

}

}

return d;

}

//================================================

//函数名:niantian()

//参数:int a

//功能:判断该年有几天

//返回值:返回该年天数d

//================================================

int niantian(int a)

{

int d;

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

d=366;

else

d=365;

return d;

}

搜索更多相关主题的帖子:

年历 C语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值