编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数

/* 
* 程序的版权和版本声明部分: 
* Copyright (c) 2012, 烟台大学计算机学院 
* All rights reserved. 
* 文件名称:编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数.cpp 
* 作    者:毛通 
* 完成日期:2012 年 12月 03日 
* 版 本 号:v1.0 

*/

 

#include<iostream>
using namespace std;

bool right(int year,int mon,int day);     //判断日期是否合法
bool leap(int n);                          //判断是否是闰年
int sum(int year,int mon,int day);         //求这是这一年的第几日

int main()
{
	int year,mon,day;
	cin>>year>>mon>>day;
	sum(year,mon,day);        //主函数只调用sum函数
	return 0;
}

int sum(int year,int mon,int day)    //定义 sum函数
{
	int n;
	if(right(year,mon,day))          //嵌套调用 right函数
	{
		if(leap(year))                  //嵌套调用 leap函数
		{
			switch(mon)                    //switch解决是不是太长了?
			{
			case(1):n=day;break;
			case(2):n=day+31;break;
			case(3):n=day+29+31;break;
			case(4):n=day+31*2+29;break;
			case(5):n=day+30+31*2+29;break;
			case(6):n=day+30+31*3+29;break;
			case(7):n=day+30*2+31*3+29;break;
			case(8):n=day+30*2+31*4+29;break;
			case(9):n=day+30*2+31*5+29;break;
			case(10):n=day+30*3+31*5+29;break;
			case(11):n=day+30*3+31*6+29;break;
			case(12):n=day+30*4+31*6+29;break;
			}

		}
		else
		{
			switch(mon)
			{
			case(1):n=day;break;
			case(2):n=day+31;break;
			case(3):n=day+29+31;break;
			case(4):n=day+31*2+28;break;
			case(5):n=day+30+31*2+28;break;
			case(6):n=day+30+31*3+28;break;
			case(7):n=day+30*2+31*3+28;break;
			case(8):n=day+30*2+31*4+28;break;
			case(9):n=day+30*2+31*5+28;break;
			case(10):n=day+30*3+31*5+28;break;
			case(11):n=day+30*3+31*6+28;break;
			case(12):n=day+30*4+31*6+28;break;
			}

		}
		cout<<n<<endl;
	}
	else 
	cout<<"不是正确的日期"<<endl;
	

	return n;      

}

bool leap(int n)             //判断是否是闰年
{
	bool leap;
	if(n%4==0)           
	{if(n%100==0)   
	{if(n%400==0)       
	leap=true;          
	else
		leap=false;
	}
	else                   
		leap=true;
	}
else                        
leap=false;
return leap;
}

bool right(int year,int mon,int day)    //判断日期是否合法
{
	bool right;
		if(year>0)
	{
		if(mon>0&&mon<13)
		{
			switch(mon)
			{
				case(1):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(2):if(leap(year))
							if(day>0&&day<30)
							right=true;
					else right=false ;break;
				case(3):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(4):if(day>0&&day<31)
						right=true;
					else right=false ;break;
				case(5):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(6):if(day>0&&day<31)
							right=true;
					else right=false ;break;
				case(7):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(8):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(9):if(day>0&&day<31)
							right=true;
					else right=false ;break;
				case(10):if(day>0&&day<32)
							right=true;
					else right=false ;break;
				case(11):if(day>0&&day<31)
							right=true;
					else right=false ;break;
				case(12):if(day>0&&day<32)
							right=true;
					else right=false ;break;
			}
		}	else right=false ;
	}	else right=false ;

		return right;
}


/*
运行结果:

编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数_第1张图片
*/

你可能感兴趣的:(编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数)