编写程序判断某年某月某日这一年中是第几天。

/*         
* Copyright (c) 2012, 烟台大学计算机学院         
* All rights reserved.         
* 作 者:  刘同宾       
* 完成日期:2012 年 11 月 30 日         
* 版 本 号:v1.0         
*         
* 输入描述:   
* 问题描述: 编写程序判断某年某月某日这一年中是第几天。
* 程序输出:
* 问题分析:略        
* 算法设计:略         
*/


#include<iostream>

using namespace std;

int main()
{
	int f(int year,int month,int day);  //函数声明

	int leap(int year);//函数声明

	int t=0,s=0,i; 

	int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};  //定义一数组 12个月的天数

	int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};   //闰年

	int year,month,day;

	cout<<"请输入年月日:"<<endl;

	while(1)             //循环  若输入错误 ,重新输入
	{
		cin>>year>>month>>day;

	    if(f(year,month,day))  //调用 判断是否输入合法 函数
		{
		    if(leap(year))    //调用判断是否是闰年的函数
			{
			    for(i=0;i<=month-2;i++) 
				{
				    t=t+b[i];            //之前月 天数的叠加
				}
			    s=t+day;
			}
		    else
			{
			    for(i=0;i<=month-2;i++)
				{
				    t=t+a[i];
				}
			    s=t+day;
			}

		    cout<<"这是这一年的第"<<s<<"天!"<<endl;

		    break;
		}

	    else
		{
		    cout<<"输入错误请重新输入:"<<endl;
		}
	}

	return 0;
}




//判断输入是否合法!
int f(int year,int month,int day)
{
	int days(int year,int month,int day);

	if(year>0)
	{
		if(month>=1&&month<=12)
		{
			if(days(year,month,day))
			{
				return true;
			}
			else
				return false;
		}
		else
			return false;
	}
	else
		return false;
}




//判断输入的天 是否合法!
int days(int year,int month,int day)
{
	int  leap(int year);

	if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
	{
		if(day>0&&day<=31)
		{
			return true;
		}		
	}
	else if(month==2||month==4||month==6||month==9||month==11)
	{
		if(day>0&&day<=30)
		{
			return true;
		}
	}
	else
	{
		if(leap(year))
		{
			if(day>0&&day<=29)
			{
				return true;
			}
		}
		else
		{
			if(day>0&&day<=28)
			{
				return true;
			}
		}
	}

}



//判断是否为闰年!
int  leap(int year)
{
	if(year%4==0&&year%100!==0||year%400==0)
	{
		return true; 
	}

	else
		return false;
}

编写程序判断某年某月某日这一年中是第几天。_第1张图片

你可能感兴趣的:(编写程序判断某年某月某日这一年中是第几天。)