设为首页 加入收藏

TOP

C语言,python和Javascript的实现
2015-01-21 11:09:15 来源: 作者: 【 】 浏览:15
Tags:语言 python Javascript 实现

今天看到一个很有趣的题目,题目描述如下:

根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
a) 1900.1.1是星期一
b) 1月,3月,5月,7月,8月,10月和12月是31天
c) 4月,6月,9月和11月是30天
d) 2月是28天,在闰年是29天
e) 公元年数能被4整除且又不能被100整除是闰年
f) 能直接被400整除也是闰年

?

以下是C语言实现版本:

?

#include 
  
   
#include 
   
     bool isLeapYear(int year); // start is the weekday of 1st, January // return the num of the first day of each month // is Sunday. // the start will change into the next year int getYearNum(int* start, int year); // Num of days of each month int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int leapdays[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main(void) { int sum = 0; int start = 1901; int end = 2000; int startWeek = 1; int startYear = 1900; int i; for (i = 1; i < 13; ++i) days[i] += days[i - 1]; for (i = 1; i < 13; ++i) leapdays[i] += leapdays[i - 1]; for (i = startYear; i < start; ++i) getYearNum(&startWeek, i); for (i = start; i <= end; ++i) sum += getYearNum(&startWeek, i); printf("%d\n", sum); return 0; } bool isLeapYear(int year) { if (year % 4 == 0 && year % 100 != 0) return true; else if (year % 400 == 0) return true; return false; } int getYearNum(int* start, int year) { int i; int count = 0; int yeardays; if (isLeapYear(year)) { yeardays = 366; for (i = 0; i < 12; ++i) if ((leapdays[i] % 7 + *start)%7 == 0) ++count; } else { yeardays = 365; for (i = 0; i < 12; ++i) if ((days[i] % 7 + *start)%7 == 0) ++count; } *start = (yeardays % 7 + *start)%7; return count; } 
   
  
下来是最简单的python:

?

?

import calendar
sum = 0
startYear = 1901
endYear = 2000
for year in xrange(startYear, endYear + 1):
	for month in xrange(1, 13):
		if calendar.monthcalendar(year, month)[0].index(1) == 6:
			sum = sum + 1

print sum

最近对于 JavaScript的网页脚本有点感兴趣,就试着用 java script实现了一下,感觉不错,有可视化和跨平台性

?

?

?

OK,一个问题,多种语言,各有优劣。同时用多种语言是一种很不错的体验。


?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言排序--Can you find it?(Hdu.. 下一篇OC之Block的使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: