根据历法原理,设 a 年元旦是星期 s (取值为0~6,其中0为星期日),整数 s 的计算公式是:
这里,
a
是公元的年数,
表示为
的整数部分,也就是说,三个分数式只取商数的整数部分,余数略去不计。求出小括号内的数值后,再用7除,所得结果就是
s
。如果恰能除尽,这一天一定是星期日;若余数是1,这一天是星期一;余数是2,这一天就是星期二;以此类推。例如,要求算2015年的元旦(1月1日)是星期几。
而2503%7=357余4,这说明2015年的1月1日是星期四。
/*****************************************************/ /* 1.c 给出年份,计算该年元日是星期几? */ /*****************************************************/ #include<stdio.h> main() { int a,s,z; printf("请输入年份yyyy:"); scanf("%d",&a); s=a+(a-1)/4-(a-1)/100+(a-1)/400; z=s%7; if(z==0)printf("元旦这一天为星期天。\n"); if(z==1)printf("元旦这一天为星期一。\n"); if(z==2)printf("元旦这一天为星期二。\n"); if(z==3)printf("元旦这一天为星期三。\n"); if(z==4)printf("元旦这一天为星期四。\n"); if(z==5)printf("元旦这一天为星期五。\n"); if(z==6)printf("元旦这一天为星期六。\n"); }
【例1.2】给出年份,计算该年元旦那天是星期几。
解:打开“给出年份,计算该年元旦那天是星期几?”文件夹,双击扩展名为DSW的文件,进入Visual C++ 6.00编译环境,编译程序并执行,根据屏幕提示,输入年份,运行结果如下:
由运行结果可见,当你输入2016年时,程序告诉你2016年的元旦这一天是星期五。