[i=s] 本帖最后由 moonrain7758521 于 2010-8-15 15:49 编辑 [/i]
题目:如果一个渔民从今天开始按照三天打鱼两天晒网的规律工作10年,有几年的元旦时渔民正好在晒网?你能用c语言编程算出来么?
我把思路也公布了啊,大家看看如何,我们稍微想想就知道这个就是在计算日期,如果需要计算年份的次数,则需要先计算每个元旦和今天之间相差的天数,这就需要实现日期之间的加减运算,为了使程序更加通用,我们可以采用计算两个日期之间差值的方法。
计算出相差的天数以后,则需要判断相差天数和5的余数即可,如果是0,1,2则是打鱼,如果是3,4则是晒网,这样就实现了晒网的判别。对于10个年份的次数则只需要添加一个循环,依次求出每个年份的元旦是否晒网即可,这样就可以实现了,大家再试试
newbbydong 于 2012-10-22 21:10:44发表:
额``新来的``帮顶``想来学习下``
agbbs_Linux 于 2012-10-22 15:08:57发表:
顶起来…………
cppbbs 于 2012-10-22 09:31:55发表:
顶......
楼下跟上.....
pl_014 于 2012-10-22 07:06:27发表:
从概率论的角度粗算,有2/5的天数在晒网,期望是四次元旦。
agbbsagbbs 于 2012-10-22 05:03:20发表:
路过!!!
不发表意见……
wufei608 于 2012-10-21 09:20:59发表:
不错,可惜是新手啊
于 2012-10-21 00:10:55发表:
不准确那 还得判断是平年或闰年呢 平年二月少一天闰年多一天 开始那段时结构体么
yanlong938 于 2010-08-15 23:57:08发表:
没什么功底。。。
BENGBENG 于 2010-08-15 22:51:08发表:
数学处理方法很简单,算法也应该很容易实现
王中云 于 2010-08-15 18:56:29发表:
没这么简单,不同的起始年会有所区别。
张无忌1987 于 2010-08-15 15:19:57发表:
貌似有点味道,想想看
张无忌1987 于 2010-08-15 15:19:52发表:
貌似有点味道,想想看
sloepx 于 2010-08-15 14:53:34发表:
漂过
batloveshan 于 2010-08-15 14:33:41发表:
有意思。。呵呵
deepwhite 于 2010-08-15 13:57:37发表:
[i=s] 本帖最后由 deepwhite 于 2010-8-16 14:13 编辑 [/i]
匆忙想了一下,细节没怎么考虑,也许结果不对。[code]
#include
#include
#include
int main(int argc, char **argv)
{
int i = 0, base = 1900;
time_t time_new, time_curr;
struct tm *tm_new = NULL, *tm_curr = NULL;
time_t interval = 60*60*24*5;
time_curr = time(NULL);
tm_curr = gmtime(&time_curr);
base = tm_curr->tm_year;
tm_curr->tm_hour = 1;
tm_curr->tm_min = 1;
tm_curr->tm_sec = 1;
time_curr = mktime(tm_curr);
tm_new = (struct tm *)calloc(sizeof(struct tm), 0);
for (i = 1; i <= 10; i++){
tm_new->tm_year = base + i;
tm_new->tm_mon = 0;
tm_new->tm_mday = 0;
tm_new->tm_hour = 1;
tm_new->tm_min = 1;
tm_new->tm_sec = 1;
time_new = mktime(tm_new);
printf ("Year: %d\n", 1900 + base + i);
if ((time_new - time_curr + 60*60*24)%interval == 0 ||
(time_new - time_curr + 60*60*24*2) %interval == 0) {
printf ("\tHave a rest on New Year's Day\n");
}
else {
printf("\tWorking hard on New Year's Day\n");
}
}
return 0;
}
[/code]结果:[code]
/tmp $ make test2
cc test2.c -o test2
/tmp $ ./test2
Year: 2011
Working hard on New Year's Day
Year: 2012
Working hard on New Year's Day
Year: 2013
Have a rest on New Year's Day
Year: 2014
Have a rest on New Year's Day
Year: 2015
Have a rest on New Year's Day
Year: 2016
Have a rest on New Year's Day
Year: 2017
Have a rest on New Year's Day
Year: 2018
Have a rest on New Year's Day
Year: 2019
Have a rest on New Year's Day
Year: 2020
Have a rest on New Year's Day
/tmp $
[/code]这个起始日期是临时从系统中得到的,所以不同的日期执行该程序得到的结果是不相同的。
永灵子 于 2010-08-15 13:03:18发表:
额``新来的``帮顶``想来学习下``
永灵子 于 2010-08-15 13:03:16发表:
额``新来的``帮顶``想来学习下``
相思爱文 于 2010-08-15 13:00:13发表:
想一想,好玩。