❶ 用c语言实现万年历
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
long Year;
int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};//每月最后一天
char *str[]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
void nian(long year,FILE *fp)
{
int i,j,n=0,t;
char s[5][23];//把数字图形看作一个二维数组
void fyear(int t,int n,char s[5][23]);
for(i=0;i<5;i++){
for(j=0;j<23;j++){
if(((i==1)||(i==3))&&((j>=1&&j<=3)||(j>=7&&j<=9)||(j>=13&&j<=15)||(j>=19&&j<=21)))
s[i][j]=' ';
else if((j==5)||(j==11)||(j==17))
s[i][j]=' ';
else
s[i][j]='*';
}//判断‘*’的位置
}
do{
t=year%10;
year=year/10;
fyear(t,n,s);
n++;
}while(year!=0);
if(n<4){
for(i=0;i<5;i++){
for(j=0;j<24-6*n;j++)
s[i][j]=' ';
}
}
for(i=0;i<5;i++){
printf(" ");
fprintf(fp,"%s"," ");
for(j=0;j<23;j++){
printf("%c",s[i][j]);
fprintf(fp,"%c",s[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
}//用‘*’显示年份
void fyear(int t,int n,char s[5][23])
{
int i,j;
switch(t){
case 0:
for(j=19-6*n;j<22-6*n;j++)
s[2][j]=' ';
break;
case 1:
for(i=0;i<5;i++){
for(j=18-6*n;j<22-6*n;j++)
s[i][j]=' ';
}
break;
case 2:
s[1][18-6*n]=' ';
s[3][22-6*n]=' ';
break;
case 3:
s[1][18-6*n]=' ';
s[3][18-6*n]=' ';
break;
case 4:
for(j=19-6*n;j<22-6*n;j++){
s[0][j]=' ';
s[4][j]=' ';
}
s[3][18-6*n]=' ';
s[4][18-6*n]=' ';
break;
case 5:
s[1][22-6*n]=' ';
s[3][18-6*n]=' ';
break;
case 6:
s[1][22-6*n]=' ';
break;
case 7:
for(i=1;i<5;i++){
for(j=18-6*n;j<22-6*n;j++)
s[i][j]=' ';
}
break;
case 8:
break;
case 9:
s[3][18-6*n]=' ';
break;
}
}//判断图形数字里的空格
long int f(long year,int month)
{
if(month<3) return year-1;
else return year;
}
long int g(int month)
{
if(month<3) return month+13;
else return month+1;
}
long int n(int year,int month,int day)
{
return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
return(int)((n(year,month,day)%7-621049L%7+7)%7);
}//计算查询日期所处位置
void yueli(int m,FILE *fp)
{
struct tm *local;
long t;
long i,sw,wd,day,leap,k,j;
char title[]=" 日 一 二 三 四 五 六";
void rili(long year,FILE *fp);
time(&t);
local = localtime(&t);
local->tm_year = local->tm_year + 1900;
local->tm_mon ++;
Year=local->tm_year;
if(m==1){
printf("\t\t\t %s\n",str[local->tm_mon-1]);
fprintf(fp,"\t\t\t %s\n",str[local->tm_mon]);
printf("\t\t ___________________________\n");
fprintf(fp,"\t\t ___________________________\n");
printf("\t\t %s\n",title);
fprintf(fp,"\t\t %s\n",title);
sw=w(local->tm_year,local->tm_mon,1);
leap=local->tm_year%4==0&&local->tm_year%100||local->tm_year%400==0;
for(i=0;i<12;i++)
for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;
for(wd=0,day=1;day<=day_tbl[leap][local->tm_mon-1];day++)
{
date[local->tm_mon][wd][sw]=day;
sw=++sw%7;//每星期七天,以0至6计数
if(sw==0) wd++;//日期表每七天一行,星期天开始新的一行
}
for(j=0;j<6;j++){
printf("\t\t ");
fprintf(fp,"\t\t ");
for(k=0;k<7;k++)
if(date[local->tm_mon][j][k]){
printf("%3d ",date[local->tm_mon][j][k]);
fprintf(fp,"%3d ",date[local->tm_mon][j][k]);
}
else{
printf(" ");
fprintf(fp,"%s"," ");
}
printf("\n");
fprintf(fp,"\n");
}
printf("\t\t 今天是: %ld年%ld月%ld日,",local->tm_year,local->tm_mon,local->tm_mday);
fprintf(fp,"\t\t 今天是: %ld年%ld月%ld日,",local->tm_year,local->tm_mon,local->tm_mday);
switch(local->tm_wday){
case 0:printf("星期日\n");fprintf(fp,"星期日\n");break;
case 1:printf("星期一\n");fprintf(fp,"星期一\n");break;
case 2:printf("星期二\n");fprintf(fp,"星期二\n");break;
case 3:printf("星期三\n");fprintf(fp,"星期三\n");break;
case 4:printf("星期四\n");fprintf(fp,"星期四\n");break;
case 5:printf("星期五\n");fprintf(fp,"星期五\n");break;
case 6:printf("星期六\n");fprintf(fp,"星期六\n");break;
default:printf("error\n");
}
printf(" \t\t 当前时间是: %ld时%ld分%ld秒\n",local->tm_hour,local->tm_min,local->tm_sec);
fprintf(fp," \t\t 当前时间是: %ld时%ld分%ld秒\n",local->tm_hour,local->tm_min,local->tm_sec);
}//显示当前系统时间
if(m==2)
rili(local->tm_year,fp);
}
void rili(long year,FILE *fp)
{ int sw,leap,i,j,k,wd,day;
char title[]=" 日 一 二 三 四 五 六";
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;//判闰年
for(i=0;i<12;i++)
for(j=0;j<6;j++)
for(k=0;k<7;k++)
date[i][j][k]=0;//日期表置0
nian(year,fp);
for(i=0;i<12;i++)//一年十二个月
for(wd=0,day=1;day<=day_tbl[leap][i];day++)
{//将第i+1月的日期填入日期表
date[i][wd][sw]=day;
sw=++sw%7;//每星期七天,以0至6计数
if(sw==0) wd++;//日期表每七天一行,星期天开始新的一行
}
for(i=0;i<11;i+=2)
{//先测算第i+1月和第i+2月的最大星期数
// for(wd=0,k=0;k<7;k++)//日期表的第六行有日期,则wd!=0
// wd+=date[i][5][k]+date[i+2][5][k];
// wd=6;
printf("\t\t%s\t\t\t\t%s\n",str[i],str[i+1]);
fprintf(fp,"\t\t%s\t\t\t\t%s\n",str[i],str[i+1]);
printf(" ___________________________ ___________________________\n");
fprintf(fp," ___________________________ ___________________________\n");
printf(" %s %s \n",title,title);
fprintf(fp," %s %s \n",title,title);
for(j=0;j<6;j++)
{
printf(" ");//输出四个空白符
//左栏为第i+1月,右栏为第i+2月
fprintf(fp," ");
for(k=0;k<7;k++)
if(date[i][j][k]){
printf("%4d",date[i][j][k]);
fprintf(fp,"%4d",date[i][j][k]);
}
else{
printf(" ");
fprintf(fp," ");
}
printf(" ");//输出十个空白符
fprintf(fp," ");
for(k=0;k<7;k++)
if(date[i+1][j][k]){
printf("%4d",date[i+1][j][k]);
fprintf(fp,"%4d",date[i+1][j][k]);
}
else{
printf(" ");
fprintf(fp," ");
}
printf(" \n");
fprintf(fp," \n");
}
//键入回车输出下一行的日历
}
}
void main()
{
FILE *fp;
int choice;
if((fp=fopen("E:\\out1.txt","w"))==NULL){
printf("open error!\n");
exit(0);
}
yueli(1,fp);
while(1){
printf("欢迎使用本程序!请按提示选择\n");
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
printf("按[1]查看当天信息和本月月历\n");
printf("按[2]查看当年日历\n");
printf("按[3]查看某年日历\n");
printf("按[4]查看下一年日历\n");
printf("按[5]查看上一年日历\n");
printf("按[0]退出\n");
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n");
printf("输入你的选择并按回车结束:");
scanf("%d",&choice);
switch(choice){
case 1:yueli(1,fp);break;
case 2:yueli(2,fp);break;
case 3:
printf("请输入你要查询的年份: ");//输入年
scanf("%d",&Year);
rili(Year,fp);
break;
case 4:rili(++Year,fp);break;
case 5:rili(--Year,fp);break;
case 0:printf("感谢您的使用,再见!\n");return;
}
}
fclose(fp);
return;
}
❷ C语言程序 关于万年历程序的问题~~~
int
firstday(int
y)
//判断某年元旦是星期几
{
double
s
;
s=floor(year-1+(year-1)/4.0-(year-1)/100.0+(year-1)/400.0+1);
return
(int)s%7;
}
这个函数写错了,2013年错了一天,另外用浮点数,肯定有问题。
❸ c语言年历编程
#include<stdio.h>
staticintyear;
staticintweekDay;
boolisLeapYear(inty)//判断是否是闰年
{
return(y%4==0&&y%100!=0||y%400==0);//闰年的条件就是年份同时能被4和100整除或
//者能被400整除
}
longfirstDayOfYear(inty)//求出输入的那年第一天是星期几
{
longn;
n=y*365;
for(inti=1;i<y;i++)
if(isLeapYear(i))
n+=1;
returnn%=7;
}
voidprintHead(intm)//打印每个月的标题
{
if(m<10)
printf("%d月日一二三四五六 ",m);
else
printf("%d月日一二三四五六 ",m);
printf("");
for(inti=0;i<weekDay;i++)
printf("");
}
intdaysOfMonth(intm)//判断每个月有多少天
{
switch(m)
{
case1:
case3:
case5:
case7:
case8:
case10:
case12:return31;
case4:
case6:
case9:
case11:return30;
case2:if(isLeapYear(year))
return29;
else
return28;
}
return0;
}
voidprintMonth(intm)//打印每月的日历
{
printHead(m);
intdays=daysOfMonth(m);
for(inti=1;i<=days;i++)
{
if(i<10)
printf("%d",i);
else
printf("%d",i);
weekDay=(weekDay+1)%7;
if(weekDay==0)
{
printf(" ");
printf("");
}
}
}
voidmain()//主程序入口,接收输入的年份,调用函数打印日历
{
inty;
printf("请输入年份:");
scanf("%d",&y);
year=y;
if(year<1)
{
printf("输入年份不能小于1 ");
return;
}
weekDay=(int)firstDayOfYear(year);
printf("%d年 ",year);
printf("======================================== ");
for(inti=1;i<=12;i++)
{
printf(" ");
printMonth(i);
printf(" ");
}
}
可以显示公元1世纪以后的所有年份的日历,第2和第3问其实都包含在第1问里,程序看懂了自然也就会了(话说为什么不能上传附件?)
❹ c语言编程:打印年历
基于你对问题的描述c语言编程:打印年历
可以跟我详细交流下
ES://DL5858DLls
你看下吧
❺ 、电子万年历:用C语言设计一个年历系统,功能要求: (1)输入任一年将显示出该年的所有月份日期,对应的
/*
1、闰年的算法:
如果某年能被4整除但不能被100整除,
或者能被400整除,
则该年是闰年.
用表达式表示就是
(year %4 == 0 && year%100 != 0) || (year%400 == 0)
2、计算某一天是星期几:
已知1900年的1月1号为星期一,
然后就可以用某一天和1900年的1月1号相差的天数对7取余来求星期,
本题是用的公元1年的1月1号作为基准
*/
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int IsLeapYear(int); //函数定义
void main()
{
int i;
int day;
int year;
int temp;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29};
printf("Please enter the year: ");
scanf("%d",&year); //输入年份
while(Year_Start < year) //从公元1年开始执行while循环, 该年的一月一号为星期一
{
if( IsLeapYear( Year_Start ) )
Per_Year_Days = 366; //如果是闰年, 则一年有366天
else
Per_Year_Days = 365; //如果不是闰年, 则一年有365天
Year_days = Year_days + Per_Year_Days; //Year_days为从公元1年到输入年份的前一年的天数的总和
Year_Start++;
}
for( temp = 1; temp <=12; temp++ ) //temp从1到12, 对应一年内12个月
{
switch( temp ) //用switch语句将temp和12个月对应起来
{
case 1:
printf(" January(%d)\n",year); //一月
break;
case 2:
printf(" February(%d)\n",year); //二月
break;
case 3:
printf(" March(%d)\n",year); //三月
break;
case 4:
printf(" April(%d)\n",year); //四月
break;
case 5:
printf(" May(%d)\n",year); //五月
break;
case 6:
printf(" June(%d)\n",year); //六月
break;
case 7:
printf(" July(%d)\n",year); //七月
break;
case 8:
printf(" August(%d)\n",year); //八月
break;
case 9:
printf(" September(%d)\n",year); //九月
break;
case 10:
printf(" October(%d)\n",year); //十月
break;
case 11:
printf(" November(%d)\n",year); //十一月
break;
case 12:
printf(" December(%d)\n",year); //十二月
break;
}
i = Year_days % 7; //每个星期有7天, 故用每年的天数对7取余
printf("Mon\tTue\tWed\tThu\tFri\tSat\tSun\n");
if( i != 0 ) //如果余数不为零
for( temp_i = 0; temp_i < i; temp_i++)
printf("\t"); //则打印空格(这里用\t代替空格, 更加美观), 空格数为i
day = 1; //初始化day为1, 为下面的while循环做准备
if( IsLeapYear(year) && temp == 2) //如果输入的年份是闰年, 并且月份为2
while( day <= month_day[12] ) //day为一循环变量, 取值为1-365(闰年的话为1-366)
{
if( day >1 ) //如果天数大于一
if( Year_days % 7 == 0 ) //如果是星期日, 则换行
printf("\n");
if( day >= 10 )
printf("%d\t",day); //打印天数+空格
else
printf("%d\t",day);
Year_days++;
day++;
}
else //如果不满足"输入的年份是闰年, 并且月份为2"
while (day <= month_day[temp-1])
{
if( day > 1 )
if( Year_days % 7 == 0 )
printf("\n");
if( day >=10 )
printf("%d\t",day);
else
printf("%d\t",day);
Year_days++;
day++;
}
printf("\n");
if( getch() == 'q' ) //如果输入为q, 则退出程序
exit(0);
}
getch(); //每按一次键, 打印一个月份
}
int IsLeapYear( int year )
{
//判断是否是闰年, 是则返回1, 否则返回0
if ((year %4 == 0) && (year % 100 != 0) ||
(year % 400 == 0) )
return 1;
else
return 0;
}
❻ 用c语言编写万年历,要求输出任意一年的某月,能显示出这个月的日历
1、首先要判断一个年份是闰年还是平年,用一个子程序来做。
❼ C语言编写 年历显示程序
此题不是很难,我会前三个
关键是算那一年的第一天是周几
给你个基本算法,一年是365天,闰年366天
364是7的倍数,这样一年多出一天,中间多少个闰年,在加上相应的天数即可
400年多出来的天数是400+97=497也是7的倍数,那么400年一轮回,这样就算400年以内的即可
一个子函数,返回这一年的第一天是周几,很好做
int ye(int year)
{
int y=year%400;
int day=y;
int i;
for(i=0;i<y;i++)
if(闰年判断)
day++;
return day%7;
}
做一个月份天数的全局数组
int mo[12]={31,28,31,30,31,30,31,31,30,31,30,31};
需要时用一个if判断闰年改变m0[1]的值是28还是29
打印子函数,有一个小技巧,就是每个月前面的空缺部分,这个1月份是ye子函数的返回值,后面的你看和前面月份是不是重合啊,吧这个记录下来在下一月份用即可
1 2
3 4
这样月份排列更好打印一些,你的那个截图有点麻烦
int pr(int year)
{
int k=ye(year);
int i,j,;
if(闰年判断)
mo[1]=29;
else
mo[1]=28;
for(i=0;i<12;i++)
{
printf("周几英文的打印");
for(j=0;j<k;j++)
printf("一般是四个空格,就是月份前面空缺的打印");
for(j=1;j<=mo[i];j++)
{
printf("%4d",j);
k++;
if((k+j)%7==0)
printf("\n");
}
k%=7;
if(k!=0)
printf("\n");
}
}
如果像你那样,感觉需要赋值一个大一点的数组,在吧数组打印出来更好,呵呵
❽ c语言万年历编程解释
#include <stdio.h>
int leap(int year ) //平闰年的判断
{
if ((year %4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
return 1;
}
return 0;
}
void show(int year,int month) //显示指定年制定月的日历
{
//定义12个月的英文字符串
const char month_str[][4]={"","Jan","Feb","Mar","Apl",
"May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
//定义各个月的天数,二月为28天, 平年
const int month_day[]={30,31,28,31,30,31,30,31,31,30,31,30,31};
//分别定义:
int i;//该变量在后续代码中经常被使用,为计数变量
int j;//同上
int wdays;//该变量是星期数(1至7)分别代表星期(一至日)
int mdays;//记录所查询的月份的天数,注意该天数在一开始计算总天数days的时候并未被算入
int days;//记录所查询年月(从公元元年开始)的总天数,比如2008年12月的days总天数计算方式为:先计算从公元1年到2007年的总天数,再加上2008年前11个月的总天数,至此总天数days的值还不是正确的,2008年12月份的天数尚未加上,这一点在(向控制台)显示日历的过程中将逐一加上,这一处理方法也是程序实现的一个必须性要求
//从公元元年开始计算到第(year-1)年的总的天数
for(i=1,days=0;i<year;i++)
{
if(leap(i)) //闰年
{
days += 366;
}
else
{
days += 365; //平年
}
}
//再加上第year年前(month-1)个月的总天数
for(i=1;i<month;i++)
{
if(i==2 && leap(year))
{
days+=29;
}
else
{
days+=month_day[i];
}
}
printf(" %s (%d)\n",month_str[month],year); //显示月(年)
printf(" Mon Tue Wed Thu Fri Sat Sun\n"); //显示日历表头
wdays = days % 7; //此即公式核心,计算星期序号,星期天为星期七
for( j = 0; j < wdays; j++)
{
printf("%4c",' '); // 控制台显示格式需要 即空格打印
}
//定义mdays的值
if(month == 2 && leap(year))
{
mdays=29;
}
else
{
mdays= month_day[month];
}
//其中 i 为月的号数
for(i=1;i<=mdays;i++)
{
if( i > 1 && days % 7 == 0 ) //此即日历公式核心,它是以星期为单元计算日历,可见公元元年元旦为星期一
{
printf("\n"); //格式需要 换行
}
printf("%4d",i);
days=days+1; //此处让days(不是完整的总天数)变量逐一递增到真正的总天数
}
printf("\n---------------------------\n");
}
/*main()
{
int year,month;
printf("输入年和月份:");
scanf("%d%d",&year,&month);//该程序的一个明显的bug:对输入的年月数据没有进行必要的数据约束检查,比如我们总不能输入 -2009 13 吧?这样程序一下就崩溃了
show(year,month);
getchar();//暂停,让控制台显示的内容停留,键入任意键将继续
}*/
//给个新的main()
void main()
{
int year,month;
char c;
do
{
printf("\n输入年和月份:");
scanf("%d%d",&year,&month);
if(year<1 || month<1 || month > 12)//这三个条件缺一不可
{
//错误信息提示
printf("年月数据输入有误,请检查!");
}
else
{
show(year,month);
}
printf("\n\n继续查询请输入y");
c=getchar();
getchar();//接收键入y以后回车确定的字符
}while(c=='y');
}
//我已经在VC上调试过,运行正常
万历表还可以做很多扩展,有兴趣可以加我交流 QQ:805966355
❾ c语言设计万年历
看看没人帮你,我来帮你吧,以下是我新写的,用了我自己原创的算法,完全不同于网上的程序,等于说是专门为你量身定制的。奉上程序:
#include<stdio.h>
#include<windows.h>
char*NameOfMonth[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char*WeekDay[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
intIsLeapYear(intyear)
{
if(year%4==0&&year%100!=0||year%400==0)
{
return1;//闰年返回1
}else
{
return0;//平年返回0
}
}
intDateCheck(intuYear,intuMonth,intuDay)//合法返回true,非法或超出范围返回false
{
if(uYear<1901||uYear>9999||uMonth<1||uMonth>12||uDay<1||uDay>31)
{
return0;
}
if(uMonth==4||uMonth==6||uMonth==9||uMonth==11)
{
if(uDay>30)
{
return0;
}
}elseif(uMonth==2)
{
if(IsLeapYear(uYear))
{
if(uDay>29)
{
return0;
}
}else
{
if(uDay>28)
{
return0;
}
}
}
return1;
}
intGetDays(intyear,intmonth,intday)
{
intsum=0;
if(DateCheck(year,month,day)==0)
{
return-1;//日期有误
}
if(year>=1901)
{
intX=(int)(year/100);//世纪数
intY=X-(int)(X/4);//如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去
if(month<=2&&month>0)
{
year--;//把1月、2月视为上一年的13月、14月(纯粹为了计算需要)
month+=12;
}
sum=(int)(365.25*(year-1900))+(int)(30.6*(month+1))+day-Y-49;//以365.25(本来实际太阳年是365.2425天)来计算是为了计算按4年一闰的整数年总天数,加上月份天数再加上余下天数,减掉多闰天数,再减掉一个偏差值(多加的)
//月份以30.6天的平均值计算。最后减去的49,是多加的一个月以及其余相差天数的和,可得到1900年1月1日的积日为0
}
returnsum;//返回距离1900年1月1日的总天数(积日)
}
intGetDayOfMonth(intmonth,intyear)
{
inttmp_days=GetDays(year,month,1);//本月积日
intDayOfMonth=0;
month++;//下个月
if(month>12)
{
month=1;//遇到月份为12月的情况,月份为1,年份加1
year++;
}
DayOfMonth=GetDays(year,month,1);//下个月的积日
DayOfMonth-=tmp_days;//下月1日的总天数(距离1900年1月1日的积日)减去当前月1日的总天数
returnDayOfMonth;//返回当前月总天数
}
intShowCalendar(intyear,intmonth,intday)
{
inti,j,count;
intjiri=0;//积日
intdayofweek=0;//星期
if(DateCheck(year,month,day)==0)
{
printf("输入日期有误!
");//日期不合法或超出范围,年历从1901年开始
return0;
}
printf(" %d%s
",year,NameOfMonth[month-1]);
printf("--------------------------------------
");
printf("SunMonTueWedThuFriSat
");
printf("--------------------------------------
");
jiri=GetDays(year,month,1);//获取距离1900年1月1日的总天数
dayofweek=(1+jiri)%7;//月首星期,因为1900年1月1日星期一
count=GetDayOfMonth(month,year);
for(i=0;i<dayofweek;i++)
{
printf("");//填充前面空格
}
for(i=1,j=dayofweek;i<=count;i++,j++)
{
if(i<10)
{
printf("%d",i);
}else
{
printf("%d",i);
}
if((j+1)%7==0)
{
if(i!=count)
{
printf("
");//满7天,换行
}
}
}
printf("
--------------------------------------
");
return1;
}
intmain()
{
intyear,month,day,nChoise=0;
inttotaldays=0;
while(1)//主循环
{
printf("******************欢迎使用万年历********************
");
printf("$菜单$
");
printf("$1.闰年判断2.星期计算$
");
printf("$$
");
printf("$3.月历查询4.打印整年日历$
");
printf("$$
");
printf("****************************************************
");
printf("输入对应的序号进行相关操作:Choise>");
scanf("%d",&nChoise);
switch(nChoise)
{
case1:
printf("请输入要判断的年份:Year>");
scanf("%d",&year);
if(year<1900||year>9999)
{
printf("输入年份超出范围!");
break;
}
if(IsLeapYear(year)==1)
{
printf("%d年是闰年!
",year);
}else
{
printf("%d年不是闰年!
",year);
}
break;
case2:
printf("请输入要判断的日期:YearMonthDay>");
scanf("%d%d%d",&year,&month,&day);
totaldays=GetDays(year,month,day);
printf("%d年%d月%d日是%s
",year,month,day,WeekDay[(totaldays+1)%7]);
break;
case3:
printf("请输入要显示的月份:YearMonth>");
scanf("%d%d",&year,&month);
ShowCalendar(year,month,1);
break;
case4:
printf("请输入要判断的年份:Year>");
scanf("%d",&year);
for(month=1;month<=12;month++)
{
ShowCalendar(year,month,1);
}
break;
default:
printf("无效的菜单项!
");
break;
}
system("pause");
system("cls");
}
return0;
}