版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序可以实现如下三种功能:
求某个II期对应的星期
求某年某月有的天数
输出某年的日历.
例如,打印2006年日历如下:
2006年
-月二月
周日周一周二周三周四周五周六周日周一周二周三周四周五周六
1357911131357
14151617181920891011121314
2122232425262715161718192021
2829303122232425262728
三月性1月
周日周一周二周三周四周五周六周日周一同一周三周四周五周六
13571
8910111213142345678
151617181920219101112131415
2223242526272816171819202122
29303123242526272829
30
五月六月
周日周一周二周三周四周五周六周日周一周二周三周四周五周六
1357911135
121314151617186789101112
1920212223242513141516171819
26272829303120212223242526
27282930
七月八月
周日周一周二周三周四周五周六周日周一周二周三周四周五周六
113579
234567810111213141516
910111213141517181920212223
1617181920212224252627282930
2324252627282931
3031
九月十月
周日周一周二周三周四周五周六周日周一周二周三周四周五同八
456789101415
1112131415161721222324252627
1819202122232428293031
252627282930
-1—月十二月
周日周一周二周三周四周五周六周日周一周二周三周四周五周六
135713
89101112131445678910
1516171819202111121314151617
2223242526272818192021222324
293025262728293031
原代码如下:
一,非打印版(:即只能输出到屏幕,不可输出到文件)
/*万年历全集:程序可以实现如下三种功能:
求某个II期对应的星期
求某年某月有的天数
输出某年的日历
*/
A2006-1-2梁见斌*/
#include
#include
structmon
(
intmaxdata;
intdata;
};
voidSeekWeekDay(void);〃求某个日期对应的星期函数
intWeekDay(intyear,intmonth,intday);〃根据输入的日期,返回对应的星期
voidHowManyDays(void);〃求某年某月有的天数函数
intMonthDays(intyear,intmonth);〃根据输入的年号和月份,返回该月的天数
voidPrintWeek(intweekday);〃打印星期几
voidPrintMonth(intmonth);//打印月份
voidPrintDataO;〃打印日历
intmain(void)
(
intchoice;
while(l)
(
puts(〃-------------------------------------------〃);
puts(〃请输入您的选择:〃);
puts(〃输入1求某个日期对应的星期〃);
puts(〃输入2求某年某月有的天数〃);
puts("输入3输出某年的日历");
puts("输入4结束程序”);
puts(〃-------------------------------------------〃);
scanf(,z%d,z,&choice);fflush(stdin);
switch(choice)
(
case1:SeekWeekDay();break;
case2:HowManyDays();break;
case3:PrintDataO;break;
case4:return0;
default:puts("输入错误,请重新输入“);break;
)
printf(〃\n〃);printf(〃\n〃);
)
system("pause");
return0;
}
voidHowManyDays(void)〃求某年某月有的天数函数
(
intyear,month,days;
puts(〃请输入年号和月份:〃);
scanf(,,%d%d,/,&year,&month);fflush(stdin);
printf(〃你的输入为%d年%d月,〃,year,month);
days=MonthDays(year,month);〃根据输入的年号和月份,返回该月的天数
printf(/z%d年%:1月有%d天\n”,year,month,days);
}
voidSeekWeekDay(void)〃求某个日期对应的星期函数
(
intyear,month,day,weekday;
puts(〃请输入年,月,日:〃);
scanf(z,%d%d%dv,ftyear,&month,&day);fflush(stdin);
printf(〃你的输入为%d年%d月%d日\。〃,year,month,day);
weekday=WeekDay(year,month,day);〃根据printf(〃这天是〃);
PrintWeek(weekday);〃打印星期儿
)
voidPrintWeek(intweekday)〃打印星期几
(
switch(weekday)
{
case0:printf〃周日〃);break;
case1:printf(〃%s〃,〃周一〃);break;
case2:printf(〃%s〃,〃周二〃);break;
case3:printf(〃%s〃,〃周三〃);break;
case4:printf"周四〃);break;
case5:printf(〃%s〃,〃周五〃);break;
case6:printf(〃%s〃,〃周六〃);break;
)
}
voidPrintMonth(intmonth)〃打印月份
switch(month)
case1printf〃一月〃);break;
case2printf(〃%s〃,〃二月”);break;
case3printf(〃%s”,〃三月〃);break;
case4printf"四月〃);break;
case5printf〃五月〃);break;
case6printf〃六月〃);break;
case7printf(〃%s〃,“七月〃);break;
case8printf("%s〃,〃八月〃);break;
case9printf"九月〃);break;
case10printf(〃%s〃,〃十月〃);break;
case11printf(〃%s〃,—,月〃);break;
case12printf(〃%s〃,〃十二月〃);break;
)
)
intWeekDay(intyear,intmonth,intday)〃根据输入的日期,返回对应的星期
inti;
intrun=0,ping=0;
longsum;
for(i=l;i{
if(i%4==0&&i%100!=0IIi%400=0)
run++;
else
ping++;
}
sum=366*run+365*ping;
for(i=l;isum+二MonthDays(year,i);
sum+=day;〃计算总天数
return(int)sum%7;
}
intMonthDays(intyear,intmonth)〃根据输入的年号和月份,返回该月的天数
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:return31;
case4:
case6:
case9:
case11:return30;
case2:if(year%4==0&&year%100!=0!!year%400z:=0)
return29;
else
return28;
default:puts(〃这是一个错误的月份!〃);system("pause");return0;
)
)
voidPrintData(void)〃打印日历,对输出格式的控制较复杂
(
structmonmonth[13];
inti,j,k;
intyear,mon,week;
puts(〃请输入年号:〃);
scanf(z,%d/z,&year);
for(i=l;i<13;i++)〃存储该年每个月的总天数和初始日期
(
month[i].data=1;
month[i].maxdata=MonthDays(year,i);
)
for(i=0;i<6;i++)〃总共输出6排
(
for(j=l;j<=2;j++)〃每排输出2个月
(
mon=2*i+j;
printf("%15s",";
PrintMonth(mon);〃第一行打印月份
printf;
if(j==l)
printf(〃\t〃);
printf("\n");printf;
for(j=l;j<=2;j++)
for(k=0;k<7;k++)
(
PrintWeek(k);〃第2行打印星期
}
printf;
}
printf("\n");
for(j=l;j<=2;j++)
(
mon=2*i+j;
week=WeekDay(year,mon,1);〃根据输入的II期,返回对应的星期
printfC%*d”,week*5+2,month[mon].data++);〃控制输出格式,把每月的1日打
印在对应星期的下面
week++;
while(week<7)//{
printf(z/%2d”,month[mon].data++);
week++;
)
if(j==l)
printf("\t");
}
printf("\n");printf("\n");〃从第4行起打印该月剩余的日期,每7个一行;直至该
月日期打印完毕
while(month[2*i+l].data<=month[2*i+l].maxdata
month[2*i+2],data<=month[2*i+2].maxdata)
(
for(j=l;j<=2;j++)
(
mon=2*i+j;
for(k=0;k<7;k++)
{//如果该月日期未打印完,打印该日期
if(month[mon].data<=month[mon].maxdata)
printf("%2d”,month[mon].data++);
else〃否则输出空格
printf(/z");
)
if(j==l)
printf("\t");
}
printf("\rT);printf("\n");
printf("\rT);
二,打印版(:即既能输出到屏幕,又可输出到文件)
/*万年历全集:程序可以实现如下三种功能:
求某个日期对应的星期
求某年某月有的天数
输出某年的日历
*/
/*2006-1-2梁见斌*/
Sinclude
ttinclude
structmon
{
intmaxdata;
intdata;
);
voidSeekWeekDay(void);〃求某个日期对应的星期函数
intWeekDay(intyear,intmonth,intday);〃根据输入的日期,返回对应的星期
voidHowManyDays(void);〃求某年某月有的天数函数
intMonthDays(intyear,intmonth);〃根据输入的年号和月份,返回该月的天数
voidPrintWeek(intweekday,FILE*fp);〃打印星期几
voidPrintMonth(intmonth,FILE*fp);//打印月份
voidPrintDataO;〃打印日历
intmain(void)
(
intchoice;
while(l)
(
puts(,z-------------------------------------------〃);
puts(〃请输入您的选择:〃);
puts(〃输入1求某个日期对应的星期〃);
puts(〃输入2求某年某月有的天数〃);
puts(〃输入3输出某年的日历〃);
puts(〃输入4结束程序〃);
puts(〃-------------------------------------------");
scanf(〃%d”,&choice);fflush(stdin);
switch(choice)
case1:SeekWeekDay();break;
case2:HowManyDays();break;
case3:PrintDataO;break;
case4:return0;
default:puts("输入错误,请重新输入〃);break;
}
printf(〃\n〃);printf(〃\n〃);
}
system("pause");
return0;
)
voidHowManyDays(void)〃求某年某月有的天数函数
(
intyear,month,days;
puts(〃请输入年号和月份:〃);
scanf(/z%d%dz/,&year,femonth);fflush(stdin);
printf(〃你的输入为%d年%(1月,",year,month);
days=MonthDays(year,month);〃根据输入的年号和月份,返回该月的天数
printf(,z%d年%(1月有%d天\n”,year,month,days);
}
voidSeekWeekDay(void)〃求某个日期对应的星期函数
(
FILE*fp;
intyear,month,day,weekday;
if((fp=fopen("wnlweek.txt","w+〃))==NULL)
(
fprintf(stderr,z,\nErroropeningfile\nz/);
exit(1);
)
puts(〃请输入年,月,日:〃);
scanf(/z%d%d%d/z,&year,ftmonth,&day);fflush(stdin);
printf(〃你的输入为%d年%(1月%d日\nweekday=WeekDay(year,month,day);〃根据
输入的日期,返回对应的星期
printf(〃这天是〃);
PrintWeek(weekday,fp);//打印星期几
)
voidPrintWeek(intweekday,FILE*fp)〃打印星期几
switch(weekday)
case0:fprintf(stdout,〃%s〃,〃周日〃)fprintf(fp,"%s","周日〃);break;
case1:fprintf(stdout,级s〃,〃周一〃)fprintf(fp,〃%s〃,〃周一〃);break;
case2:fprintf(stdout,〃%s〃,〃周二〃)fprintf(fp,〃%s”,〃周二〃);break;
case3:fprintf(stdout,〃%s”,〃周三〃)fprintf(fp,〃姻〃,〃周三,z);break;
case4:fprintf(stdout,〃%s〃,〃周四〃)fprintf(fp,”周四〃);break;
case5:fprintf(stdout,〃%s〃,〃周五〃)fprintf(fp,"%s〃,〃周五〃);break;
case6:fprintf(stdout,〃%s〃,〃周六〃)fprintf(fp,〃%s","周六〃);break;
)
voidPrintMonth(intmonth,FILE*fp)〃打印月份
(
switch(month)
{
case1:fprintf(stdout,〃%s〃,〃一月〃);fprintf(fp,〃%s〃,“一月〃);break;
case2:fprintf(stdout,级s〃,〃二月〃);fprintf(fp,〃%s〃,”二月;break;
case3:fprintf(stdout,〃%s〃,〃三月〃);fprintf(fp,〃%s〃,〃三月z,);break;
case4:fprintf(stdout,级s","四月〃);fprintf(fp,〃%s〃,〃四月9;break;
case5:fprintf(stdout,五月”);fprintf(fp,〃%s〃,〃五月〃);break;
case6:fprintf(stdout,”牺〃,〃六月〃);fprintf(fp,六月zz);break;
case7:fprintf(stdout,'s〃,〃七月〃);fprintf(fp,"%s","七月;break;
case8:fprintf(stdout,〃%s〃,〃八月”);fprintf(fp,〃%s〃,〃八月;break;
case9:fprintf(stdout,〃版〃,〃九月〃);fprintf(fp,"%s","九月");break;
case10:fprintf(stdout,级s”,〃十月”);fprintf(fp,〃%s",〃十月/z);break;
case11:fprintf(stdout,〃版〃1—1月〃);fprintf(fp,"%s〃,"H—,月〃);break;
case12:fprintf(stdout,〃%s〃,〃十二月〃);fprintf(fp,"%s",〃十二月〃);break;
}
I
intWeekDay(intyear,intmonth,intday)〃根据输入的日期,返回对应的星期
inti;
intrun=0,ping=0;
longsum;
for(i=l;i{
if(i%4==0&&i%100!=0设400=0)
run++;
else
ping++;
)
sum=366*run+365*ping;
for(i=l;isum+=MonthDays(year,i);
sum+二day;〃计算总天数
return(int)sum%7;
}
intMonthDays(intyear,intmonth)〃根据输入的年号和月份,返回该月的天数
(
switch(month)
(
case1:
case3:
case5:
case7:
case8:
case10:
case12:return31;
case4:
case6:
case9:
case11:return30;
case2:if(year%4==0&&year%100!=0year%400==0)
return29;
else
return28;
default:puts("这是一个错误的月份!〃);system("pause");return0;
)
)
voidPrintData(void)〃打印日历,对输出格式的控制较复杂
(
FILE*fp;
structmonmonth[13];
inti,j,k;
intyear,mon,week;
if((fp=fopen("wnldata.txt","w+"))==NULL)
{
fprintf(stexit(1);
)
puts(〃请输入年号:〃);
scanf(〃%d〃,&year);
fprintf(stdout,
-----------------------------------------------------------------------------\n〃);
fprintf(fp,
-----------------------------------------------------------------------------\n〃);
fprintf(stdout,z,%35d%s\n,z,year,〃年“);fprintf(fp,〃%35d%s\n〃,year,〃年〃);
fprintf(stdout,
-----------------------------------------------------------------------------\n〃);
fprintf(fp,
〃---------------------------------------------------------------------------------\n〃);
for(i=l;i<13;i++)〃存储该年每个月的总天数和初始日期
(
month[i].data=1;
month[i].maxdata=MonthDays(year,i);
)
for(i=0;i<6;i++)〃总共输出6排
{
for(j=l;j<=2;j++)〃每排输出2个月
(
mon=2*i+j;
fprintf(stdout,/,%15s,/,〃〃);fprintf(fp,〃%15s〃,〃〃);
PrintMonth(mon,fp);〃第一行打印月份
fprintf(stdout,〃%15s〃,〃");fprintf(fp,〃%15s”,〃〃);
if(j==l)
{fprintf(stdout,〃\t");fprintf(fp,〃\t〃);}
}
fprintf(stdout,〃\n〃);fprintf(stdout,〃\n〃);fprintf(fp,"\n");fprintf(fp,
〃\n〃);
for(j=l;j<=2;j++)
(
for(k=0;k<7;k++)
(
PrintWeek(k,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻风溃疡创面护理新技术应用探讨
- 产后新生儿护理:产褥期护理须知
- 小儿重症肺炎的护理与社区健康
- 口服百赛诺护理
- 临澧考编美术试题及答案
- 胸痛患者管理培训考测试题(含答案)
- 堆取料机司机岗位工作流程考核试卷含答案
- 云母电容器制造工操作规范模拟考核试卷含答案
- 交换机务员操作水平模拟考核试卷含答案
- 船舶电讯工复试竞赛考核试卷含答案
- 2026届深圳市高三英语高考三模原创仿真模拟试卷(含答案逐题解析、听力原文与作文范文)第843套
- 铁路局招聘考试面试试题及答案(2026年成都)
- 天津渤海化工集团有限责任公司招聘笔试题库2026
- SLT 336-2025水土保持工程全套表格
- 2026年湖北省宜昌市宜都市中考物理适应性试卷(含答案)
- 光伏电站文明生产管理制度培训
- 小学科学新教科版三年级下册3. 6.一天中影子的变化 练习题(附参考答案和解析)2026春
- 全钒液流储能固态电池项目实施方案
- 梨园初探·板腔寻味-小学五年级《京调》音乐鉴赏与表现教学设计
- 法院档案扫描管理制度
- 2025年课件-(已瘦身)2023版马原马克思主义基本原理(2023年版)全套教学课件-新版
评论
0/150
提交评论