标题:各位大神快来帮忙啦,小弟c语言日历难住了
只看楼主
小勇哥29292
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-27
 问题点数:0 回复次数:9 
各位大神快来帮忙啦,小弟c语言日历难住了
2015年四月一日是星期三,则往前12345天是哪年哪月哪日星期几
搜索更多相关主题的帖子: c语言 日历 
2015-04-27 15:33
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
自己推呗

DO IT YOURSELF !
2015-04-27 15:38
小勇哥29292
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-27
得分:0 
没推出来啊  我是小菜鸟啊
2015-04-27 15:51
渣渣渣
Rank: 2
等 级:论坛游民
帖 子:26
专家分:17
注 册:2015-3-23
得分:0 
首先星期几很好推出来,其次,用你的天数一年一年的减去365或者366,当不够减时,再从后向前减月份,当不够减月份时在算几号就可以了。就这样计算。
2015-04-27 16:13
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
#include<stdio.h>
typedef struct date{
int year;              
int month;  
int day;  
}date;
int days_format(date d)
{
    switch(d.month){
        case 2:return  d.year%(d.year%100?4:400)?28:29;
        case 4:case 6:case 9:case 11:
            return 30;
        default:return 31;
    }
}
void prior(date &d)
{
    if(d.day>1)d.day--;
    else{
        if(d.month>1){
            d.month--;
            d.day=days_format(d);
        }
        else {
            d.year--;
            d.month=12;
            d.day=days_format(d);
        }
    }
}         
int main(void)
{
    date d;
    int j,t;
    char a[7][3]={"一","二","三","四","五","六","日"};
    printf("请输入日期 按格式 年 月 日 星期几 :如:2015 4 1 3\n");
    scanf("%d%d%d%d",&d.year,&d.month,&d.day,&j);
    printf("请输入往前的天数");
    scanf("%d",&t);
    printf("%d年%d月%d日是星期%s,",d.year,d.month,d.day,a[j-1]);     
    for(int i=0;i<t;i++){
        prior(d);
        j=(j+5)%7+1;
    }
    printf("则往前%d天是%d年%d月%d日星期%s ",t,d.year,d.month,d.day,a[j-1]);  
}

剑栈风樯各苦辛,别时冰雪到时春
2015-04-27 16:29
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
我觉得算法按这样来:
1,一回归年为365.2422天,这样可不考虑闰年(因为闰年就是为了修正小数点后的误差)。
2,12345天=12345/365.2422=33.7995年,很显然那一天是在34年前的4月1日起算,(2015-4-1)-34=1981-4-1
3,(34-33.7995)*365.2422=73.231,即这一天是4月1日后又过了73天,4月1日+73天=4月74日=6月(74-61=13)=6月13日,即2015年4月1日往前推12345天是1981年6月13日
4,星期几位12345%7=4,0为星期日,所以星期三模值为2,即2+4=6,应该是星期六。
不知是否可行,未编程验证,仅供参考。

能编个毛线衣吗?
2015-04-27 18:14
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2276
专家分:10647
注 册:2015-3-19
得分:0 
回复 6楼 wmf2014
有道理

剑栈风樯各苦辛,别时冰雪到时春
2015-04-27 18:28
纳兰伽香
Rank: 10Rank: 10Rank: 10
来 自:北京
等 级:贵宾
威 望:10
帖 子:426
专家分:1650
注 册:2015-4-5
得分:0 
公务员考试题

风回小院庭芜绿,柳眼春相续
2015-04-27 22:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
这个题目有那么复杂吗  我觉得就是一道小学数学题(不知道我的答案是否正确)

程序代码:
#include <stdio.h>

int main(int argc,char * argv[])
{
    printf("%d\n",(3+7-12345 % 7) % 7 );  //答案应该是星期六吧
    return 0;
}



不好意思,漏题了 我以为只是单纯的问星期几呢

[ 本帖最后由 wp231957 于 2015-4-28 10:17 编辑 ]

DO IT YOURSELF !
2015-04-28 10:15
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 

DO IT YOURSELF !
2015-04-28 10:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-444561-1-1.html




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

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