C++根据输入的日期求天数
2012-06-05 14:10:10 来源:WEB开发网核心提示:这个小程序可以根据你输入的年份,月份和天数求出是一年中的第几天,C++根据输入的日期求天数,#include <iostream>class Tools{public://用于重置输入流void Recovery();};void Tools::Recovery(){//清空键盘缓冲区std::cin.sy
这个小程序可以根据你输入的年份,月份和天数求出是一年中的第几天。
#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; } } } }
更多精彩
赞助商链接