#include <iostream>
#include <string>
using namespace std;
void dayofweek(int &m, int d, int y);
int main()
{
int m, d, y, daynum;
char ans;
do {
cout << "Enter a date as mm dd yyyy: \n";
cin >> m >> d >> y;
dayofweek(m, d, y);
cout << m << d << y;
daynum=(d + 5 + ((26*(m+1))/10) + ((5*(y%100))/4) + ((21*(y/100))/4))%7;
cout << daynum;
switch(daynum)
{
case 0:
cout << m << "/" << d << "/" << y << "is a Monday \n";
break;
case 1:
cout << m << "/" << d << "/" << y << "is a Tuesday \n";
break;
case 2:
cout << m << "/" << d << "/" << y << "is a Wednesday \n";
break;
case 3:
cout << m << "/" << d << "/" << y << "is a Thursday \n";
break;
case 4:
cout << m << "/" << d << "/" << y << "is a Friday \n";
break;
case 5:
cout << m << "/" << d << "/" << y << "is a Saturday \n";
break;
case 6:
cout << m << "/" << d << "/" << y << "is a Sunday \n";
break;
}
cout<<"Do you want to continue? (y/n) \n";
cin >> ans;
}while (ans == 'y' || 'Y');
return 0;
}
void dayofweek(int& m, int d, int y)
{
if (m==1 || m==2)
m=m+12;
}
這個編譯和工作正常,但是當我輸入日期,錯誤的週日出現。澤勒的一致性編碼,輸出錯誤的一天
例如,2/28/2014是星期五,但星期六出現。 有什麼建議嗎?我堅持要改變什麼,我也多次檢查方程。
意味着:0 =星期六,1 =週日,2 =週一... – 4pie0
(ANS == 'Y' || 'Y')是與(ans =='y')||相同('Y'!= 0),因此總是如此。因此,你的循環將永遠運行。 – chrizke
'dayofweek' - 告訴我有關誤導性的名字... –