| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1311 人关注过本帖
标题:小菜请大家帮忙解释一下"高斯日记"
只看楼主 加入收藏
驱动器
Rank: 2
来 自:广西
等 级:论坛游民
帖 子:15
专家分:19
注 册:2013-8-20
结帖率:100%
收藏
已结贴  问题点数:8 回复次数:4 
小菜请大家帮忙解释一下"高斯日记"
大数学家高斯有个好习惯:无论如何都要记日记。
他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210
后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。
这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,
还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。
在高斯发现的一个重要定理的日记上标注着:5343,
因此可算出那天是:1791年12月15日。
高斯在某一天日记上标着:8113   
请你算出这一天的年月日。


代码如下:

#include<stdio.h>
int runnian(int y)
{
    if(((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
        return 1;
    else
        return 0;
}

void main()
{
    int year = 1791, month = 12, day = 15, t = 0, i, n;
    int    y = year;
    int    m = month;
    int d = day;
    int arr[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    n = 8113 - 5343 == 2770;
    for(i = 11;t <= 2770;i++)//t为什么从11 开始?
    {
        if(i >= 12)
        {
            i = 0;
            y++;
        }
        if(runnian(y))
            arr[1] = 29;
        else
            arr[1] = 28;
        day = 2770 - t;
        t = t + arr[i];   
        m = i + 1;//这三句也不是很懂

    }
    printf("y=%d,m=%d,d=%d",y,m,d+1);
}
搜索更多相关主题的帖子: include 年月日 数学家 高斯 日记 
2013-08-21 23:14
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
收藏
得分:6 
t为什么从11 开始?:其实是从12开始,代表的是月份,因为数组是从0开始数的。为什么从12开始?1791年12月15日。起始日期是从这个日期,不是出生日期。
day = 2770 - t;
 t = t + arr[i];
m = i + 1;//这三句也不是很懂:先明確其中变量的意思,t:月份天数,i当月月份,m所求月份,day剩余天数。
简而言之就是天数之差不断的减去一个月又一个月的天数,并加到月份天数上直到累计天数大于2770,m用来存储最后结果的月份。

[ 本帖最后由 xiaoseqingch 于 2013-8-28 21:08 编辑 ]
2013-08-28 21:05
xiaoseqingch
Rank: 2
等 级:论坛游民
帖 子:36
专家分:42
注 册:2010-6-19
收藏
得分:0 
t为什么从11 开始?:其实是从12开始,代表的是月份,因为数组是从0开始数的。为什么从12开始?1791年12月15日。起始日期是从这个日期,不是出生日期。
day = 2770 - t;
 t = t + arr[i];
m = i + 1;//这三句也不是很懂:先明確其中变量的意思,t:月份天数,i当月月份,m所求月份,day剩余天数。
简而言之就是天数之差不断的减去一个月又一个月的天数,并加到月份天数上直到累计天数大于2770,m用来存储最后结果的月份。
2013-08-28 21:07
辉也那
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2013-8-28
收藏
得分:0 
没有看明白,问题我记下
2013-08-29 00:18
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:2 
额。这个不难看吧
首先是i从11,不是t
t是从0开始的

i = 11,是记录的月份,当前十二月,是arr数组的下标11

day = 2770 - t;
day是记录天数,把总数2770 减去t记录的整月份的天数,剩下就是对应那个月的天

t = t + arr[i];   
t记录整月份的天数,累积记录为了算出上面的天数
m = i + 1
m记录的月份,每次循环加上一个月,因此m 在递增

你不要只看代码,要看代码需求更容易理解

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-29 13:49
快速回复:小菜请大家帮忙解释一下"高斯日记"
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved