至于计算6月1日、5月1日,网上有不少算法,还有专门的公式,这里贴一个C++的,晚上回去准备先把父亲节、母亲节程序搞出来。
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
// ************************************************
// str_week
//
/// <summary>
/// 返回谋年某月任意一天是星期几的描述
/// </summary>
//y:年,m:月,d:日。在参数都只传入相应的整数
// ********************************************/
string str_week(int y,int m,int d){
int a=7; // 用来保存计算得到的星期几的整数
string str_date="";
if((m==1)||(m==2))//如果是一月或二月进行换算
{
m+=12;
y--;
}
a=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; //得到的星期几的整数
switch (a){
case 0:
str_date="星期一";
break;
case 1:
str_date="星期二";
break;
case 2:
str_date="星期三";
break;
case 3:
str_date="星期四";
break;
case 4:
str_date="星期五";
break;
case 5:
str_date="星期六";
break;
case 6:
str_date="星期日";
break;
}
return str_date;
}
int main()
{
int y, m, d;
cout << "输入日期:如 2012-03-30" << endl;
scanf("%d-%d-%d", &y, &m,&d);
cout << str_week(y, m, d) << endl;
} |