[C++]根據輸入的日期求天數

#include <iostream>

class Tools
{
public:
//用於重置輸入流
void Recovery();
};

void Tools::Recovery()
{
//清空鍵盤緩衝區
std::cin.sync();
std::cin.clear();
};

void main()
{
//閏年的月份天數
const int Leap_Year_month[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
//非閏年的月份天數
const int mon[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
//臨時變量,用於存放月份天數的累加和
int temp = 0;
//閏年標誌
bool LeapYear = false;
//建立工具類對象
Tools t;
//for循環變量
int i;
int year,month,day;
std::cout << "請輸入年份:";
std::cin >> year;
//輸入不爲數字
while(! std::cin)
{
std::cout << "錯誤:只能輸入數字\n 請從新輸入:" << std::endl;
t.Recovery();
std::cin >> year;
}
//限定年份範圍
while(year <=0 || year > 5000)
{
std::cout <<"錯誤:年份輸入不正確 \n 請從新輸入:" << std::endl;
t.Recovery();
std::cin >> year;
}
//判斷是否閏年
if(year % 4 == 0 && year % 100 != 0)
{
LeapYear = true;
}
else
{
LeapYear = false;
}
std::cout << "請輸入月份:";
std::cin >> month;
while(!std::cin)
{
std::cout << "錯誤:只能輸入數字\n 請從新輸入:";
t.Recovery();
std::cin >> month;
}
//限定月份輸入範圍
while(month <=0 || month >= 13)
{
std::cout << "錯誤:月份只能在1-12之間 \n 請從新輸入:";
t.Recovery();
std::cin >> month;
}
std::cout << "請輸入日期:";
std::cin >> day;
while(! std::cin)
{
std::cout << "錯誤:只能輸入數字\n 請從新輸入:";
t.Recovery();
std::cin >> day;
}
//限定天數輸入範圍
while(day <= 0 || day >=32)
{
std::cout << "錯誤:天數只能在1-31之間 \n 請從新輸入:";
t.Recovery();
std::cin >> day;
}
//若是不爲閏年
if(!LeapYear)
{
while(day > mon[month-1] )
{
std::cout << "\n天數輸入錯誤:"<< year << "年" << month << "月沒有" << day << "天" << std::endl;
std::cout << "請從新輸入:";
t.Recovery();
std::cin >> day;
}
}
//閏年版本的天數累加
if(LeapYear)
{
switch(month)
{
case 1:
{
std::cout << "\n這是一年中的第" << day << "天" << std::endl;
break;
}
case 2:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 3:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 4:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 5:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 6:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 7:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 8:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 9:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 10:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 11:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 12:
{
for(i=0;i<month-1;i++)
{
temp += Leap_Year_month[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
}
}
//非閏年版本的天數累加
else
{
switch(month)
{
case 1:
{
std::cout << "\n這是一年中的第" << day << "天" << std::endl;
break;
}
case 2:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 3:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 4:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 5:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 6:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 7:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 8:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 9:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 10:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 11:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
case 12:
{
for(i=0;i<month-1;i++)
{
temp +=mon[i];
}
std::cout << "\n這是一年中的第" << temp + day << "天" << std::endl;
break;
}
}
}
}
相關文章
相關標籤/搜索