输入年月日计算是星期几

偶然的机会看到了一个计算星期几的算法,感觉很怪异并且很有意思就记录一下,也与大家共勉。自己写的代码有些瑕疵,但重点是计算星期的算法值得思索。

问题:输入年月日计算是星期几?

代码如下:

#include <stdio.h>
int getWeek(int year, int month, int day)
{
int aWeek[12] = {0,3,2,5,0,3,5,1,4,6,2,4};
int week = 0;
int temp = 0;

if(year < 1 || month < 1 || month > 12 || day < 1 || day > 31)
{
return 0;
}
year -= month < 3;
temp = (year + year/4 - year/100 + year/400 + aWeek[month-1] + day) % 7;
switch(temp)
{
case 0: week = 7;break;
case 1: week = 1;break;
case 2: week = 2;break;
case 3: week = 3;break;
case 4: week = 4;break;
case 5: week = 5;break;
case 6: week = 6;break;
default: week = 0;break;
}
return week;
}
int main()
{
int year = 0;
int month = 0;
int day = 0;
int week = 0;
while(1)
{
printf("Please input date:(year month day)\n");
scanf("%d %d %d", &year, &month, &day);
week = getWeek(year, month, day);
if(week < 1 || week > 7)
return 0;
printf("date:%d-%d-%d is %d of week\n", year, month, day, week);
}
return 0;
}

时间: 2024-10-29 19:10:32

输入年月日计算是星期几的相关文章

输入年月日计算出是该年的第多少天

插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过! 1.Charles 为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析.一个可查看所有HTTP和SSL/HTTPS流量的工具.这款工具对于你测试和服务器端进行交互的应用非常有用 2.xScope xScope带有六种不同的工具,帮助每一个设计者快速.精确的完成工作,这些工具功能灵活.强大,包括∶量

P219 输入年月日计算是该年的第几天

#include<stdio.h>int main(){ int year,month,day; scanf("%d%d%d",&year,&month,&day); int runian(int month,int day); int frunian(int month,int day); if((year%4==0)&&(year%100!=0)) printf("%d\n",runian(month,day)

c#控制台程序-“输入指定年月日查询出星期几”

其中涉及一个算法: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7 在公式中d表示日期中的日数,m表示月份数,y表示年数. 注意:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算. 代码如下: Console.WriteLine("**************************"); Console.WriteLi

08--MOOC--C/C++ 根据年月日计算星期几——蔡勒公式篇

C/C++ 根据年月日计算星期几——蔡勒公式篇 蔡勒公式  蔡勒(Zeller)公式:是一个计算星期的公式.随便给一个日期,就能用这个公式推算出是星期几.蔡勒公式如下:W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1公式中的符号含义如下:w:星期: w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六c:世纪-1(前两

编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?

#include<stdio.h> /*函数is_leap_year()的返回值是判断该年是否闰年*/ int is_leap_year(int year) { int leap; if(year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0; return leap; } /*函数len_of_month()的返回值为某年year的某月month的天数*/ int len_of_month(int year,int m

输入日期计算天数

#include <stdio.h>void main(){ int year,month,day,daynum; printf("请输入年月日,用,号隔开,格式列(2014,5,12)\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month) { case 1: daynum=day; break; case 2: daynum=30+day; break; case 3:

Practice:输入年月日,判断为一年的第几天

#-*- coding:utf-8 -*-'''Created on 2015-6-7# 输入年月日,判断为一年的第几天@author: AdministrInputator'''# strInput = '150223'# a = int(strInput[-2:])# print(a)def leapYear(year): # 判断平闰年,由于输入年份只有两位数,‘00’~‘69’转换为2000~2069,‘70’~’99‘转换为1970~1999 if year < 70: year +=

输入年月日,推断是该年的第几天,还能够进一步推断从1年開始的第几天

//输入年月日,推断是该年的第几天,还能够进一步推断从1年開始的第几天 #include<iostream> using namespace std; int main() { int Day(int x,int y,int r); int Calculate_1(int x,int y,int r); int Calculate_2(int n); int n,y,r;/*****************************************************年,月,日,非常

输入年月日,判断是该年的第几天,还可以进一步判断从1年开始的第几天

//输入年月日,判断是该年的第几天,还可以进一步判断从1年开始的第几天 #include<iostream> using namespace std; int main() { int Day(int x,int y,int r); int Calculate_1(int x,int y,int r); int Calculate_2(int n); int n,y,r;/*****************************************************年,月,日,很明