黑色星期五
/************************************************************************/
/*題目:有一種計算機病毒叫黑色星期五,如果當天是13號,又恰好是星期五,就會
/* 發作起來毀壞計算機存儲係統。試編程找出九十年代中這種病毒可能發作的
/* 日期。
/************************************************************************/
#include <iostream>
using namespace std;
int main()
{
int nYear; //input year
int nMonth; //input month
int nDay; //input day
int nWeekDay; //input the day of week
cout << "Enter the date of today in the form of: year month day dayofweek : " << endl;
cin >> nYear >> nMonth >> nDay >> nWeekDay;
//////////////////////////////////////////////////////////////////////////
switch (nWeekDay) //先保證是星期五,相應天數要調整
{
case 1:
nDay += 4; break;
case 2:
nDay += 3; break;
case 3:
nDay += 2; break;
case 4:
nDay += 1; break;
case 6:
nDay -= 1; break;
case 7:
nDay -= 2; break;
}
//////////////////////////////////////////////////////////////////////////
cout << "The date may be as following: " << endl;
while (nYear >= 1990)
{
while (nDay >= 7)
{
if (nDay == 13 && nYear >= 1990 && nYear <= 1999)
cout << nYear << "年 " << nMonth << "月 " << nDay << "日 " << " 星期五" << endl;
nDay -= 7;
}
switch (--nMonth) //先倒退一個月,以計算前一個月的天數
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
nDay += 31;
break;
case 4: case 6: case 9: case 11:
nDay += 30;
break;
case 2:
if ((nYear % 4 == 0) && (nYear % 100) || (nYear % 400 == 0))
nDay += 29; //閏年2月有29天
else
nDay += 28; //平年2月28天
break;
case 0: //倒退一年
nYear -= 1;
nMonth = 12;
break;
}
}
system("pause");
return 0;
}
最後更新:2017-04-02 15:15:29