万年历程序设计.docx
- 文档编号:6902476
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:15
- 大小:21.21KB
万年历程序设计.docx
《万年历程序设计.docx》由会员分享,可在线阅读,更多相关《万年历程序设计.docx(15页珍藏版)》请在冰豆网上搜索。
万年历程序设计
万年历
一、大赛目的
本着丰富大学生学习生活的同时,为使学生学以致用,能将学习与生活中遇到的实际问题转化为计算机专业的问题,并给予合理的解决。
以期培养学生专业的逻辑思维能力,以专业的知识解决问题的能力。
二、实验环境(实验设备)
•Window7操作系统,VisualC++
三、程序的功能:
用户可以通过主菜单选择不同的选项:
输入1,进入万年使用说明界面;输入2,进入万年历的年查询界面,在此界面根据提示,输入需查询的年份,便可输出全年各月份的日历,并清楚地显示每天是星期几,且在每个月份日历下面提示该月份重要的国内外阳历节日;输入3,进入万年历的月查询界面,在此界面根据提示输入需查询的年月份,便可直接进入该月份的日历,并提示该月份的国内外重要阳历节日;输入4,进入万年的日查询界面,根据界面的提示,输入年月日,从而清楚地显示出年月日和对应的星期,并清楚地判断南邮70周年校庆是否成功举办,若还没举办,输出距离输入的日期还有多少天;输入5,退出万年历查询系统。
四、程序用到的重要算法和语句:
(1)判断该年份是否为闰年:
条件:
if(year%4!
=0||year%100==0&&year%400!
=0)真,表示为平年假,表示为闰年。
(2)判断任意一年的第一个月的第一天为星期几:
a=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;y:
年份
(3)计算下一个月的第一天为星期几:
a=(a+m)%7;m:
月份
(4)计算任意一年的任意一月的第一天为星期几:
a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;
(5)if…..;elseif…..;else…..;
(6)do{…..}while(……);
(7)switch(…..){case0:
…….;case1:
………..};
五、程序的源代码:
#include
#include
#include
intjudge(intyear,intmonth)/*定义一个函数,把月分为四类(28,29,30,31)*/
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return
(1);/*31天的月份,返回值为1*/
elseif(month==2)
{
if(year%4!
=0||year%100==0&&year%400!
=0)
return
(2);/*平年的2月份,返回值为2*/
elsereturn(3);/*闰年的2月份,返回值为3*/
}
elsereturn(4);/*30天的月份,返回值为4*/
}
voidholiday(intmonth)/*定义阳历节日函数*/
{printf("友情提示:
\n");
if(month==0)
{printf("1月1日:
元旦\n");}
elseif(month==1)
{printf("2月2日:
世界湿地日2月14日:
情人节\n");}
elseif(month==2)
{printf("3月3日:
全国爱耳日3月5日:
青年志愿者服务日3月8日:
国际劳动妇女节\n");
printf("3月9日:
保护母亲河日3月12日:
植树节3月14日:
白色情人节\n");
printf("3月15日:
世界消费者权益日3月20日:
邮政节3月23日:
世界气象节\n");
printf("3月22日:
世界水日3月24日:
世界防治结核病日\n");}
elseif(month==3)
{printf("4月1日:
愚人节4月5日:
清明节4月7日:
世界卫生日\n");
printf("4月22日:
世界地球日4月26日:
世界知识产权日\n");}
elseif(month==4)
{printf("5月1日:
国际劳动节5月3日:
世界哮喘日5月4日:
中国青年节\n");
printf("5月8日:
世界红十字日5月12日:
国际护士节5月15日:
国际家庭日\n");
printf("5月17日:
世界电信日5月20日:
全国学生营养日5月23日:
国际牛奶日\n");
printf("5月31日:
世界无烟日\n");}
elseif(month==5)
{printf("6月1日:
国际儿童节6月5日:
世界环境日6月6日:
全国爱眼日\n");
printf("6月17日:
世界防治荒漠化和干旱日6月23日:
国际奥林匹克日\n");
printf("6月25日:
全国土地日6月26日:
国际禁毒日\n");}
elseif(month==6)
{printf("7月1日:
中国建筑日7月7日:
中国人民抗日战争纪念日7月11日:
世界人口日\n");}
elseif(month==7)
{printf("8月1日:
中国人民解放军建军节8月12日:
国际青年节\n");}
elseif(month==8)
{printf("9月8日:
国际扫盲日9月10日:
中国教师节9月16日:
中国脑健康日\n");
printf("9月16日:
国际臭氧层保护日9月20日:
全国爱牙日9月21日:
世界停火日\n");
printf("9月27日:
世界旅游日\n");}
elseif(month==9)
{printf("10月1日:
国庆节10月1日:
世界老年人节10月4日:
世界动物日\n");
printf("10月5日:
世界教师节10月8日:
全国高血压节10月10日:
世界精神卫生日\n");
printf("10月15日:
世界盲人节10月16日:
世界粮食日10月17日:
国际消除贫困日\n");
printf("10月24日:
联合国日10月28日:
中国男性健康日10月29日:
国际生物多样性日\n");
printf("10月31日:
万圣节\n");}
elseif(month==10)
{printf("11月8日:
中国记者日11月9日:
消防宣传日11月14日:
世界糖尿病日\n");
printf("11月17日:
国际大学生日11月25日:
国际消除对妇女的暴力日\n");}
elseif(month==11)
{printf("12月1日:
世界艾滋病日12月3日:
世界残疾人日12月4日:
全国法制宣传日\n");
printf("12月9日:
世界足球日12月25日:
圣诞节\n");}}
intday1(intyear,intmonth)
{
inta[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(judge(year,month)==3)
a[1]=29;
returna[month-1];
}
intx(intyear,intmonth,intday)
{if(year<0||month<1||month>12||day<1||day>day1(year,month))
return0;
else
return1;
}
voidexplaination()
{
inty;
system("cls");
printf("\t\t\t\t\t\t\t\t\t\t\t<<<<<<<<<<<<<<万年历使用说明>>>>>>>>>>>>>>>\n\n\n");
printf("一、年历:
输入需查询的年份,将会显示全年的日历。
\n");
printf("二、月历:
输入需查询的年月份,注意格式年月之间用空格分开,便可以直接进入你需要查询的月份。
\n");
printf("三、日历:
输入需要查询的年月日,注意格式年月日之间用空格分开,将会显示该天为星期几。
\n四、");
printf("此万年历显示了国内外的一些重要的阳历节日,希望给你带来方便。
\n");
printf("五、本万年历可以通过日历查询距离70周年校庆的倒计时。
\n");
printf("六、由于我们能力不足和水平有限,没能如愿将公历显示在该日历上,会有许多不能满足你的需求,敬请谅解。
\n");
printf("七、欢迎老师和同学对我们的万年历提出改进的宝贵的意见和建议。
\n");
do
{
printf("\n是否返回目录(1.是;0.否)");
fflush(stdin);
scanf("%d",&y);
}while(y!
=1);
return;
}
voidnianli()
{inti,j,a,n,m,k,y,h,s;
char**p;
char*week[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
char*month[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
system("cls");
printf("\n\n请输入您要查的年份:
");/*给出输入提示*/
scanf("%d",&y);/*输入查询的年份*/
h=x(y,1,1);
if(h==0)
{
printf("error:
请您重新输入!
!
!
\n");/*输入值异常时报错*/
//break;
}
//printf("pleasekeytheyear:
");
//scanf("%d",&year);
printf("\n");
//printf("欢迎使用超人和双仔的万年历,祝您愉快!
!
!
");
printf("\n");
a=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;
for(i=0;i<12;i++)/*输出12个月的日历表*/
{
n=judge(y,i+1);
p=month+i;
printf("%s\n",*p);/*在屏幕上输出当月的月份*/
printf("\n");
printf("╭───────────────────────────────╮\n\n");
for(j=0;j<7;j++)
{
p=week+j;
printf("%10s",*p);
}
printf("\n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 程序 设计