设计一个程序,对于从键盘输入年月日,计算出对应是星期几
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/17 16:41:48
设计一个程序,对于从键盘输入年月日,计算出对应是星期几
星期几的算法有以下两种:
W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+D
Y是年份,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天.
W=[C/4]-2C+y+[y/4]+[13*(m+1)/5]+d-1
C是世纪数减1
y是年份后两位
M是月份,d是日数
1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值
两个公式中的[]均指只取整数部分
算出来的W余几就是星期几,0=日
参考例子:(测试正确)
#include
bool IsLeapYear(int nYear)
{
return ((!(nYear % 4) && nYear % 100) || !(nYear % 400));
}
int CalcWeekday(int nYear,int nMonth,int nDay)
{
/*
W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+D
Y是年份,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天.
*/
int DT[] = {1,4,4,0,2,5,0,3,6,1,4,2};
int nDayIn = (nMonth > 2) ((IsLeapYear(nYear) (DT[nMonth - 1] + 1) :DT[nMonth - 1])) :DT[nMonth - 1];
int nWeekday = (nYear - 1 + (nYear - 1)/4 - (nYear - 1)/100 + (nYear - 1)/400 + nDayIn) % 7;
// 算出本月第一天为星期几
nWeekday = (nWeekday < 0) (nWeekday + 7) :nWeekday;
// 返回该天为星期几
return (nWeekday + nDay - 1) % 7;
}
int main()
{
int nYear,nMonth,nDay;
char arrDayName[][25] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
printf("Year Month Day:");
scanf("%d %d %d",&nYear,&nMonth,&nDay);
printf("%d-%d-%d:%s\n",nYear,nMonth,nDay,arrDayName[CalcWeekday(nYear,nMonth,nDay)]);
return 0;
}
希望我的回答能对你有所帮助!
如果还有问题,可以BaiduHi我,!
W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+D
Y是年份,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天.
W=[C/4]-2C+y+[y/4]+[13*(m+1)/5]+d-1
C是世纪数减1
y是年份后两位
M是月份,d是日数
1月和2月要按上一年的13月和14月来算,这时C和y均按上一年取值
两个公式中的[]均指只取整数部分
算出来的W余几就是星期几,0=日
参考例子:(测试正确)
#include
bool IsLeapYear(int nYear)
{
return ((!(nYear % 4) && nYear % 100) || !(nYear % 400));
}
int CalcWeekday(int nYear,int nMonth,int nDay)
{
/*
W=[Y-1]+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+D
Y是年份,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天.
*/
int DT[] = {1,4,4,0,2,5,0,3,6,1,4,2};
int nDayIn = (nMonth > 2) ((IsLeapYear(nYear) (DT[nMonth - 1] + 1) :DT[nMonth - 1])) :DT[nMonth - 1];
int nWeekday = (nYear - 1 + (nYear - 1)/4 - (nYear - 1)/100 + (nYear - 1)/400 + nDayIn) % 7;
// 算出本月第一天为星期几
nWeekday = (nWeekday < 0) (nWeekday + 7) :nWeekday;
// 返回该天为星期几
return (nWeekday + nDay - 1) % 7;
}
int main()
{
int nYear,nMonth,nDay;
char arrDayName[][25] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
printf("Year Month Day:");
scanf("%d %d %d",&nYear,&nMonth,&nDay);
printf("%d-%d-%d:%s\n",nYear,nMonth,nDay,arrDayName[CalcWeekday(nYear,nMonth,nDay)]);
return 0;
}
希望我的回答能对你有所帮助!
如果还有问题,可以BaiduHi我,!
编写一个程序,只要输入年月日,就能回答那天是星期几
设计一个程序,从键盘输入一个圆的半径,求其周长和面积 C++
设计一个java程序,从键盘输入三个整数,按照从小到大的顺序输出
c++设计一个程序 从键盘输入10个数,找出其中的最大值和最小值
哪位大侠用c编下面这个程序:从键盘输入1~7(否则应给出出错信息)之间的数字,输出表示一个星期中对应某一天的英文单词.
用Java语言设计一个程序,从键盘输入3个整数,按照从小到大的顺序输出.是用Java语言哦,
编写一个程序,从键盘输入圆的半径,计算该半径对应的周长,面积,球的表面积和体积?
用Delphi设计一个程序,从键盘输入a,b,c3个整数,将它们按照从大到小的次序输出
设计一个C ++程序,从键盘输入a b c 三个整数,将他们从大到小依次输出
VF,设计一个计算分段函数的程序,从键盘输入一个X,根据X计算函数的值
设计一个程序,从键盘输入一个圆的半径,求其周长和面积…………
c语言 编写程序,从键盘输入一个整数,计算并输出它是几位数.若输入的是负数时,要求重新输入.