万年历程序分析资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
万年历程序分析资料

万年历程序(中文版) #includestdio.h #includestdlib.h #includeconio.h char*S=\n??? *; //换行符\n右边的4个空格使“年历”相对于屏幕比较“居中” //空格少则“年历”偏于屏幕左边,反之则“年历”就偏于右边。 //“准空行(1个星号+70个空格+1个星号)”的宏定义: #define EP printf(%s%s????????? %s%s*,S,k,k,k) int LEAP(int year); int xqj(int year,int month,int day); void fill(int y,int m,char array[]); void half(int year,int month1st); main() { ??? int year; ??? do ??? { ?????? printf(年份:??); ?????? scanf(%d,year); ?????? fflush(stdin);//避免误输入导致的死循环 ??? } ??? while(year=0||year9999); ??? half(year,1); //上半年 ??? getch();//避免一闪而过 ??? printf(\n); ??? half(year,7); //下半年 ??? getch();//避免一闪而过 ??? printf(\n); } int LEAP(int y)//判断公元y年是否闰年 //如果y是闰年年份(如2008)则返回1,否则返回0 { ??? return!(y%(y%100?4:400)); //即 //??return (y%(y%100!=0?4:400))==0; //??但前面那种表达方式显然更加精炼 } int xqj(int year,int month,int day) //确定year年month月day日为星期几 //[注意]如果是星期天则返回值为零 { ??? int i,y1,days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; ??? days[2]=28+LEAP(year);//搞定2月份的天数 ??? for(i=1;imonth;i++)day+=days[i]; //??循环毕,形参day存放:这一天是全年的第几天 ??? y1=year-1;//因为year年还没过完,所以减一 ??? day+=y1+y1/4-y1/100+y1/400;//此句是核心 ??? return day%7; //让返回值落在闭区间[0,6] } void fill(int y,int m,char array[3*7*6]) //用sprintf()对array[]填充某个月的“日” //关于数组大小[3*7*6]的解释: //“3”是因为“日”最大值31占用2格再加上1个间隔 //“7”是因为“星期几”共有7种状态 //“6”是因为1个“月”最多可能要涉及6个“星期” { ??? char *pa; ??? int i,x1,days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; ??? days[2]=28+LEAP(y);//搞定2月份的天数 ??? x1=xqj(y,m,1);//求y年m月1号是星期几 ??? if(x1==0)x1=7;//让星期日与x1==7对应 ??? pa=array+3*(x1-01);//此句是很关键的 ////pa=array+3*(x1-00);//另一种版本应这样////////////////// ??? for(i=0;i3*7*6;i++)array[i]= ; ??? for(i=1;i=days[m];i++,pa+=3)sprintf(pa,%3d,i); ??? *pa= ;//用空格冲掉sprintf()语句遗留下来的\0 } void half(int year,int m) //完成半个“年历”的输出任务 //m=1对应上半年m=7对应下半年 { ??? int i,j; ??? char ary[6][7*3],bry[6][7*3],cry[6][7*3]; ??? char *k=????????????????????;//20个空格 ??? char *xq=一 二 三 四 五 六 日 ;//星期几 ////char *xq=日 一 二 三 四 五 六 ;//另一种版本应这样////////////////// ??? char *xs=********************************;//32个星号 ??? printf(%s

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档