Programming Pearls
onyas
这个作者很懒,什么都没留下…
展开
-
C语言实现的LCD数学
在看编程珠玑,第三章,最后一题,额。。。。。好像用C语言做比较麻烦,因为要涉及到字符串的应用,用C++或Java之类的可能更简单些,但算法一样、#include #include int size=5,count;//size是改变数字的大小 //flag代表每个数字对应h,v,h,v,h的值. int flag[10][5]={ { 1, 3, 0, 3, 1 }原创 2012-12-08 15:05:03 · 2200 阅读 · 0 评论 -
线性时间内从一个数组中找出第K个最小的元素
/*思路:用调优的快速排序,首先随机选择一个pivot对数组进行划分,左边小于pivot,右边大于等于pivot,所以我们计算左边小于pivot(加上pivot)的个数count总共有多少,如果等于k,正是我们所要的,返回x[k];如果大于k,说明第k小的数在左边,那就在左边进行我们的递归;否则,在右边,那么说明右边的第k-count小的数就是我们所要的,在右边进行我们的递归。这样的平原创 2013-04-29 10:54:17 · 1756 阅读 · 0 评论 -
计算一个日期中在一年中所经过的天数
#include int day_of_year(int y,int m,int d){ int k,leap,s; int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; leap = (y%4==0&&y%100!=0)||(y%400==0); s = d; for(k=1;k<m;k++) { s+=days[k];原创 2013-05-19 14:17:28 · 1034 阅读 · 0 评论 -
给定日期输出星期几
根据蔡勒公式/*1582/10/4之后时W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d-11582/10/4之前时w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d+2w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪减1(年份前两位数)y:年(后两位数)m:月(m原创 2013-05-18 22:30:51 · 1707 阅读 · 0 评论 -
给定年份和该年中的某一天,返回该天所处的月份和月中的日子
#include int isLeap(int year){ if((year%4==0 && year%100!=0)||(year%400==0)) { return 1; } else return 0;}int main(){ int allDays[12]={31,59,90,120,151,181,212,243,273,304,334,365}; in原创 2013-05-14 23:14:01 · 1100 阅读 · 0 评论 -
给定两个日期,计算中间的天数
C语言版的/* 给定两个日期,计算中间的天数 思路: 1、同年同月的时候,直接计算天数的差值 2、同年不同月,计算月份和天数的差值(小月到月底+大月月初到指定日期的天数+中间隔的月的天数) 3、不同年,计算小年到年尾的天数+大年年初到指定日期的天数+中间隔的年的天数 以下各函数的意义: isLeap()判断是否为润年 swap()交换两个变量的值,始终把小的日期放原创 2013-05-16 23:41:25 · 3505 阅读 · 0 评论