C语言万年历
来源:互联网 发布:java图片上传原理 编辑:程序博客网 时间:2024/04/28 14:28
#include <stdio.h>
#include <string.h>
//返回0表示成功
int show(int year,int month)
{
int N,m,d,y,c,Wd;
int i,maxday;
if(month==13)
{
year++;
month=1;
}else if(month==0){
year--;
month=12;
}
if(month>13||month<0)
{
printf("HAVE WRONG!");
return -1;
}
m=month;
printf("/n============%d,%2d============/n",year,month);
switch(m)
{
case 1:maxday=31;break;
case 2:
if( (year%4==0&&year%100!=0) || (year%400==0) )
maxday=29;
else
maxday=28;
break;
case 3:maxday=31;break;
case 4:maxday=30;break;
case 5:maxday=31;break;
case 6:maxday=30;break;
case 7:maxday=31;break;
case 8:maxday=31;break;
case 9:maxday=30;break;
case 10:maxday=31;break;
case 11:maxday=30;break;
case 12:maxday=31;break;
}
if(0<m&&m<=2)
{
N=year-1;
m=m+12-2;
}
else
{
N=year;
m=m-2;
}
c=N/100;
y=N%100;
//这是一个著名的是蔡勒(Zeller)公式。具体原理请网上搜索一下。
Wd=((1+(13*m-1)/5+y+y/4+c/4-2*c)%7+7)%7;
printf(" SUN MOU TUE WED TUR FRI SAT/n");
for(i=0;i<Wd;i++)
printf("%4c",' ');
for(d=1;d<=maxday;d++)
{
printf("%4d",d);
Wd=(Wd+1)%7;
if(Wd==0)
printf("/n");
}
printf("/n");
return 0;
}
void main( )
{
int year,month;
char x[20];
int flag=0;
printf("please input year: ");
scanf("%d",&year);
printf("please input month: ");
scanf("%d",&month);
flag=show(year,month);
while(flag==0)
{
printf("/n");
printf("功能列表:下月N,上月P,退出Q /n");
scanf("%s",x);
if(x[0]=='N' || x[0]=='n')
{ flag=show(year,++month); }
else if(x[0]=='P' || x[0]=='p')
{ flag=show(year,--month); }
else
{
printf("感谢使用!/n");
flag=-1;
}
}
}
- C语言万年历.c
- c语言部分万年历
- C语言实现:万年历
- c语言万年历
- c语言 万年历!!
- C语言万年历
- 万年历C语言代码
- C语言之万年历
- 万年历C语言代码
- 万年历 C语言
- C语言万年历
- C语言打印万年历
- C语言实现万年历
- c语言实现万年历
- C语言--万年历
- C语言之万年历
- C语言实现万年历
- C语言编写万年历
- 解决ubuntu下Firefox Flash文字乱码或不能显示的问题
- UBUNTU 8.10 锐捷上网
- 一句话管理
- 从今天起,每天写一篇日志,记录我的学习!
- 数组
- C语言万年历
- 从最大子段和问题看算法的优化问题
- frameset使用总结
- 每天找一个人来赞美
- 学习了
- eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(ma
- 如何做好线下活动——ThinkPad SL媒体训练营侧记(2)
- C语言指针问题快速解惑
- ubuntu 9.04下安装skyeye通过------转