满意答案

ojus52

2013.07.17

采纳率:56%    等级:12

已帮助:2995人

分析

按月为单位计算,模拟运算,1900年1月13日是星期六(代号1),下个月的13日就是代号(1+31-1) mod 7+1的星期。

因为数据小,所以不会超时。

当数据比较大时,可以以年为单位计算,每年为365天,mod 7的余数是1,就是说每过一年所有的日和星期错一天,闰年第1、2月错1天,3月以后错2天。这样,只要先求出第一年的解,错位添加到以后的年即可。

详细分析:因为1900.1.1是星期一,所以1900.1.13就等于(13-1) mod7+1=星期六。这样讲可能不太清楚。那么,我来解释一下:每过7天是一个星期。n天后是星期几怎么算呢?现在假设n是7的倍数,如果n为14,那么刚好就过了两个星期,所以14天后仍然是星期一。但如果是过了15天,那么推算就得到是星期二。这样,我们就可以推导出一个公式来计算。(n天 mod 7(一个星期的天数)+ 现在日期的代号) mod 7 就等于现在日期的代号。当括号内的值为7的倍数时,其代号就为0,那么,此时就应该是星期日这样,我们可以得出题目的算法:

int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}

int b[8]={0}

a数组保存一年12个月的天数(因为C语言中数组起始下标为0,所以这里定义为13)。

b数组保存星期一到星期日出现的天数。用date记录目前是星期几的代号,然后用两个循环,依次加上所经过的月份的天数,就出那个月是星期几,当然,要注意判断闰年!知道了这个方法,实现起来就很容易了。

注意考虑闰月的情况。

最后注意要换行,否则会错误。

还可利用蔡勒公式

源代码

方法1

{不用蔡勒公式}

program five001;

var

wk:array[0..6]of Longint;

n,i,j,x,s,days,nk,m:Longint;

begin

assign(input,'friday.in');reset(input);

assign(output,'friday.out');rewrite(output);

readln(n);

nk:=1;m:=0;x:=13 mod 7;

for i:= 1900 to 1900+n-1 do

begin

for j:= 1 to 12 do

begin

case j of

1,3,5,7,8,10,12 :days:=31;

4,6,9,11 :days:=30;

2 :if (i mod 4 = 0)and(i mod 100 <> 0)or(i mod 400 = 0)

then days:=29

else days:=28;

end;

wk[(x+nk-1) mod 7]:=wk[(x+nk-1) mod 7]+1;

m:=days mod 7;

s:=nk;

if s+m=7 then nk:=7;

nk:=(m+s) mod 7;

end;

end;

writeln(wk[6],' ',wk[0],' ',wk[1],' ',wk[2],' ',wk[3],' ',wk[4],' ',wk[5]);

close(input);close(output);

end.

方法2

{根据蔡勒公式写的代码。}

var

n,i,j,year,m,c,y,w :longint;

a :array[0..6] of longint;

begin

Assign(input,'Friday.in');reset(input);

Assign(output,'Friday.out');rewrite(output);

readln(n);

for i:=1900 to 1899+n do

for j:=1 to 12 do

begin

year:=i;

m:=j;

if (m=1)or(m=2) then

begin

dec(year);

m:=m+12;

end;

c:=year div 100;

y:=year mod 100;

w:=(y+ y div 4 + c div 4 -2*c+ 26*(m+1) div 10 +13 -1) mod 7;

w:=(w+7) mod 7;

inc(a[w]);

end;

writeln(a[6],' ',a[0],' ',a[1],' ',a[2],' ',a[3],' ',a[4],' ',a[5]);

Close(input);close(output);

halt;

end.

35分享举报

c语言13号星期几,用pascal求这一年中每个月的13号是星期几相关推荐

  1. c语言编程彩票中奖30选7,中国福利彩票30选7(七乐彩)中奖号码表

    七乐彩上市以来已中出1222注百万超值一等奖! 全国联销 每周一.三.五北京开奖 01     02     03     04     05     06     07     08     09  ...

  2. C语言怎么计算任意一天事星期几,怎么计算任意一年某个月的第一天是星期几...

    满意答案 bsb3159352 2016.07.12 采纳率:53%    等级:10 已帮助:1218人 脚本之家 首页应用手游攻略教程 ﹤首页 → 网络编程 → JavaScript → 基础知识 ...

  3. 13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。

    13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现. #include <stdio.h> #include < ...

  4. 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。

    [绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...

  5. 13个人围成一圈,从第1个人开始顺序报号1,2,3。 凡报到3者退出圈子

    #include <stdio.h> #include <stdlib.h> #define N 13 /* 13个人围成一圈,从第1个人开始顺序报号1,2,3. 凡报到3者退 ...

  6. 批量关闭公众号推送_微信推出“一键拒收”长期未读公众号推送功能

    近期已经写了不少关于微信的消息了,本来想换个话题休息一下,谁知道微信不休息啊,又开始内测了.7月25日,部分iOS内测微信用户会收到系统对长时间未读订阅号的提醒,并可通过提醒入口选择不接收这部分订阅号 ...

  7. python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...

    导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...

  8. 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神

    用c语言编写大整数的四则运算,求大神 答案:3  信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...

  9. php熊掌号怎么设置json-ld,dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据

    dedecms织梦系统怎么对接百度熊掌号并添加JSON_LD数据? 百度推出的百度熊掌号非常的不错,我的dedecms织梦系统早早就对接好了,它能对你的原创文章进行原创保护,并评出熊掌号搜索指数,熊掌 ...

最新文章

  1. 数据库连接类 DB.class.php
  2. 怎么计算一组数据的波动_数据分析(一):数据描述统计
  3. pyotrch nn.Conv2d中groups参数的理解
  4. HDU 3046 Pleasant sheep and big big wolf 最小割
  5. 三维重建:深度相机方案对比-KinectFusion的基本原理(尺度)
  6. Python: 编程遇到的一些问题以及网上解决办法?
  7. 静态 动态 强类型 弱类型语言的区别
  8. 学校计算机考察内容是什么意思,2019考研计算机复试四项考察内容分析及注意事项...
  9. matlab2016一条命令设置坐标轴标签旋转角度、字体大小和字体!
  10. [渝粤教育] 西南科技大学 政治经济学 在线考试复习资料
  11. CAD如何导出天正各版本DWG图纸?CAD图形导出教程
  12. FileZilla Server1.5使用入门
  13. FMEA在汽车开发过程中的实施-SunFMEA
  14. uni-app - 解决 H5 微信公众号授权登录后,无法回退到 “上一页“ 的问题(微信登录后如何返回到触发它的那一页?无法通过 uni.navigateBack() 返回到前一页的问题?)详细教程
  15. Picasso加载圆形图片和圆角图片
  16. 泰山OFFICE技术讲座:中英文间隔,间隔以哪个字体为准?
  17. Flink 教程 gitbook 从入门到入土(详细教程)
  18. python如何分析高频词_python数据分析高频词提取,pyecharts词云制作并保存
  19. 物联网到底是什么,生活中能用得上吗?
  20. 大数据信息资料采集:视频信息采集及评论内容爬取八爪鱼采集规则

热门文章

  1. 迪杰斯特拉(Dijkstra) —— 最短路算法
  2. html+css 自己写的html5代码不规范?这一篇就够了
  3. Android开机动画制作
  4. 12306 购票小助手
  5. 2017四川省赛总结
  6. Project 2013 理论基础
  7. 量化交易神器tushare
  8. 路由器的无线桥接(WDS)和有线桥接办法
  9. 智慧工厂智能化运营管理系统的详情分析
  10. Linux开启ssh