自制程序:输入年月日,以空格隔开,输出当天的星期数。时间范围为公元2000-2600年
代码如下:
#include <iostream>
using namespace std;
int main()
{
cout<<"输入年月日,以空格隔开(范围公元2000年到2600年)"<<endl;
int y, m, d;
while (cin >> y >> m >> d)//计算2000年到2600年间星期几
{
if (2000 <= y && y <= 2600 && 1 <= m && m <= 12 && 1 <= d && d <= 31)
{
int xq = 6;//从2000为基准1月1号为星期六
if (y == 2000)
{
for (int j = m; j > 1; j--)
{
switch (j - 1)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: xq = xq + 31; break;
case 4: case 6: case 9: case 11: xq = xq + 30; break;
case 2: xq = xq + 29; break;
}
}
}
else
{
for (int k = y; 2000 < k; k--)
{
int j = k - 1;
if (j % 400 == 0 || j % 4 == 0 && j % 100 != 0)
{
xq = xq + 366;
}
else
{
xq = xq + 365;
}
}
for (int p = m; p > 1; p--)
{
switch (p - 1)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: xq = xq + 31; break;
case 4: case 6: case 9: case 11: xq = xq + 30; break;
case 2: xq = xq + 28; break;
}
}
if (y % 400 == 0 || y % 4 == 0 && y % 100 != 0)
{
if (m > 2) xq = xq + 1;
}
}
xq = xq + d - 1;
xq = xq % 7;
cout<<"星期";
switch (xq)
{
case 1: case 2: case 3: case 4: case 5: case 6: cout << xq << endl; break;
case 0: cout << 7 << endl; break;
}
}
else cout<<"您输入的年月日不符合规范"<<endl;
}
}