
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 · 2275 阅读 · 0 评论 -
线性时间内从一个数组中找出第K个最小的元素
/* 思路:用调优的快速排序,首先随机选择一个pivot对数组进行划分,左边小于pivot,右边大于等于pivot, 所以我们计算左边小于pivot(加上pivot)的个数count总共有多少, 如果等于k,正是我们所要的,返回x[k]; 如果大于k,说明第k小的数在左边,那就在左边进行我们的递归; 否则,在右边,那么说明右边的第k-count小的数就是我们所要的,在右边进行我们的递归。 这样的平原创 2013-04-29 10:54:17 · 1802 阅读 · 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 · 1068 阅读 · 0 评论 -
给定日期输出星期几
根据蔡勒公式 /* 1582/10/4之后时 W=[C/4]-2C+y+[y/4]+[13*(M+1)/5]+d-1 1582/10/4之前时 w=y+[y/4]+[c/4]-2c+[13(m+1)/5]+d+2 w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六 c:世纪减1(年份前两位数) y:年(后两位数) m:月(m原创 2013-05-18 22:30:51 · 1744 阅读 · 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 · 1125 阅读 · 0 评论 -
给定两个日期,计算中间的天数
C语言版的 /* 给定两个日期,计算中间的天数 思路: 1、同年同月的时候,直接计算天数的差值 2、同年不同月,计算月份和天数的差值(小月到月底+大月月初到指定日期的天数+中间隔的月的天数) 3、不同年,计算小年到年尾的天数+大年年初到指定日期的天数+中间隔的年的天数 以下各函数的意义: isLeap()判断是否为润年 swap()交换两个变量的值,始终把小的日期放原创 2013-05-16 23:41:25 · 3669 阅读 · 0 评论