inputs a date (e.g. July 4, 2008) and outputs the day of the week-根据输入日期判断星期几:
//inputs a date (e.g. July 4, 2008) and outputs the day of the week
#include<iostream>
#include<string>
using namespace std;
bool leapyear;
void getInput(string& a,int& month,int& day,int& year);
bool isLeapYear(int year);
int getCenturyValue(int year);
int getYearValue(int year);
int getMonthValue(string a,int month,int year);
int main()
{
int month,day,year,week;
int centuryvalue,yearvalue,monthvalue;
string a,b;
getInput(a,month,day,year);
leapyear = isLeapYear(year);
cout<<"isLeapYear "<<leapyear<<endl;
centuryvalue = getCenturyValue(year);
cout<<"centuryvalue "<<centuryvalue<<endl;
yearvalue = getYearValue(year);
cout<<"yearvalue "<<yearvalue<<endl;
monthvalue = getMonthValue(a,month,year);
cout<<"monthvalue "<<monthvalue<<endl;
week = (day + monthvalue + yearvalue + centuryvalue) % 7;
cout<<"week "<<week<<endl;
switch(week)
{
case 1:
b = "Monday";
break;
case 2:
b = "Tuesday";
break;
case 3:
b = "Wednesday";
break;
case 4:
b = "Thursday";
break;
case 5:
b = "Firday";
break;
case 6:
b = "Saturday";
break;
case 0:
b = "Sunday";
break;
default:
cout<<"ERROR!";
}
cout<<"The day of week is "<<b<<endl;
return 0;
}
void getInput(string& a,int& month,int& day,int& year)
{
int number;
cout<<"Enter the date:"<<endl;
cout<<"1:month is english,"<<endl;
cout<<"2:month is numbers."<<endl;
cin>>number;
switch(number)
{
case 1:
cout<<"Enter the date(july 4 2008):\n";
cin>>a>>day>>year;
break;
case 2:
cout<<"Enter the date(7 4 2008):\n";
cin>>month>>day>>year;
break;
default:
cout<<"Error!";
}
}
bool isLeapYear(int year)
{
if(0 == year % 400 || (year % 4 ==0 && 0 != year % 100))
return 1;
return 0;
}
int getCenturyValue(int year)
{
int tem;
tem =(3 - (year / 100) % 4)*2;
return tem;
}
int getYearValue(int year)
{
int tem;
tem = (year % 100) / 4 + year % 100;
return tem;
}
int getMonthValue(string a,int month,int year)
{
if(a == "october" || month == 10 || (a == "january" && (!leapyear)) || (month == 1 && (!leapyear)))
return 0;
else if(a == "may" || month == 5)
return 1;
else if(a == "august" || month == 8 || (a == "february" && (leapyear)) || (month == 2 && (leapyear)))
return 2;
else if(a == "march" || month == 3 || a == "november" || month == 11 || (a == "february" && (!leapyear)) || (month == 2 && (!leapyear)))
return 3;
else if(a == "june" || month == 6 )
return 4;
else if(a == "september" || month == 9 || a == "december" || month == 12)
return 5;
else if(a == "april" || month == 4 || a == "july" || month == 7 || (a == "january" && (leapyear)))
return 6;
return -1;
}结果:
Enter the date: 1:month is english, 2:month is numbers. 2 Enter the date(7 4 2008): 9 1 2014 isLeapYear 0 centuryvalue 6 yearvalue 17 monthvalue 5 week 1 The day of week is Monday Enter the date: 1:month is english, 2:month is numbers. 2 Enter the date(7 4 2008): 7 4 2008 isLeapYear 1 centuryvalue 6 yearvalue 10 monthvalue 6 week 5 The day of week is Firday Enter the date: 1:month is english, 2:month is numbers. 1 Enter the date(july 4 2008): july 4 2008 isLeapYear 1 centuryvalue 6 yearvalue 10 monthvalue 6 week 5 The day of week is Firday
inputs a date (e.g. July 4, 2008) and outputs the day of the week-根据输入日期判断星期几
原文:http://9320314.blog.51cto.com/9310314/1547281