实用有趣的C语言程序 - (EPUB全文下载)
文件大小:0.35 mb。
文件格式:epub 格式。
书籍内容:
实用有趣的C语言程序
第1章 日历和日期
第2章 大数计算
第3章 极限、级数和圆周率等
第4章 复数运算
第5章 矩阵计算
第6章 解多元一次线性方程组
第7章 解一元n次方程(上)
第8章 解一元n次方程(下)
第9章 其他程序
附录 Visual C++ 6.0的上机操作
参考文献
第1章日历和日期
公历是全世界通用的历法,以地球绕太阳的一周为一年,一年365天,分为12个月,1月、3月、5月、7月、8月、10月和12月为31天,2月为28天,其余月份为30天。事实上地球绕太阳一周共365天5小时48分46秒,比公历一年多出5小时48分46秒。为使年误差不累积,公历年用闰年法来消除年误差,由于每年多出5小时48分46秒,每4年累计多出23小时15分4秒,接近1天。天文学家就规定每4年有一个闰年,把2月由28天改为29天,凡是公历年能被4整除的那一年就是闰年,但是这样一来每4年又少了44分56秒。为了更准确地计时,天文学家又规定凡能被100整除的年份,只有能被400整除才是闰年,即每400年要减掉3个闰年(例如,1700年、1800年和1900年不是闰年,2000年才是闰年),经过这样处理后,实际上每400年的误差只有2小时53分20秒,已相当准确了。
根据以上情况,某一年是否为闰年应按以下规则计算:闰年应能被4整除(如2016年是闰年,2015年不是闰年),但不是所有能被4整除的年份都是闰年。在能被100整除的年份中,只有同时能被400整除的年份才是闰年(如2000年是闰年),能被100整除而不能被400整除的年份(如1800年、1900年,2100年)不是闰年。
农历与公历不同,农历把月亮绕地球一周作为一月,一年12个月,总共354天或355天。而天气的冷热变化一次是365天,它和回归年(公历年)一致。这样农历和公历一年要相差11天或10天,3年就是1个月多。为使农历能适应天气冷热变化的周期,就在第3年加上1个月,这一年就有13个月,加上的这个月叫“闰月”,1年就是384或385天了。“闰月”也分为大月和小月,闰大月30天,闰小月29天。可以在任何一个月闰,既可闰大月,也可闰小月。农历采用19年加7个闰月的办法,即“十九年七闰法”,把回归年与农历年很好地协调起来。农历是中国传统文化的代表之一,并与农业生产联系密切,中国人民特别是广大农民十分熟悉并喜爱农历。
公历与农历是我国目前并存的两种历法,各有其固有的规律,农历与月球的运行相对应,其影响因素多。它的大小月和闰月与天体运行有关计算十分复杂,且每年都不一致。因此要用计算机或单片机实现公历与农历的转换,用查表法是最方便实用的办法。
1.1 给出年月日,计算该日是星期几
1.编程说明
根据历法原理,按照下面的公式计算,就可以知道某年某月某日是星期几了。这个公式是:
这里,x是公元的年数,C是从这一年的元旦算到这天为止(连这一天也在内)的日数。式中,表示为的整数部分,也就是说,三个分数式只取商数的整数部分,余数略去不计。求出S后,再用7除。如果恰能除尽,这一天一定是星期日;若余数是1,这一天是星期一;余数是2,这一天就是星期二。以此类推。程序中,占大部分篇幅的程序是在计算C,算C之前,还有判断所求年份是否是闰年,这样决定2月份是28天还是29天。
例如,要求算2016年的1月2日是星期几。
而2505%7=357余6,这说明2016年的1月2日是星期六。
2.程序清单
/*************************************************************/
/*1.c 给出年月日,计算该日是星期几 */
/*************************************************************/
#include
main()
{
int a,b,c,d,s,z;
printf("请输入年月日yyyy,mm,dd: ");
scanf("%d,%d,%d",&a,&b,&c);
if((a%4==0 && a%100!=0)||(a%400==0))
{ if(b==1)d=c;
if(b==2)d=c+31;
if(b==3)d=c+60;
if(b==4)d=c+91;
if(b==5)d=c+121;
if(b==6)d=c+152;
if(b==7)d=c+182;
if(b==8)d=c+213;
if(b==9)d=c+244;
if(b==10)d=c+274;
if(b==11)d=c+305;
if(b==12)d=c+335;
}
else{if(b==1)d=c;
if(b==2)d=c+31;
if(b==3)d=c+59;
if(b==4)d=c+90;
if(b==5)d=c+120;
if(b==6)d=c+151;
if(b==7)d=c+181;
if(b==8)d=c+212;
if(b==9)d=c+243;
if(b==10)d=c+273;
if(b==11)d=c+304;
if(b==12)d=c+334;
}
s=a-1+(a-1)/4-(a-1)/100+(a-1)/400+d;
z=s%7;
............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 实用有趣的C语言程序 - (EPUB全文下载)