zoukankan      html  css  js  c++  java
  • C语言根据日期取其位于一年中的第几天

    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    bool isLeapYear( int iYear )
    {//判断闰年
    	if( iYear < 0 )
    		return false;
    	
    	if( !(iYear % 400) )
    		return true;
    
    	if( !( iYear % 100 ))
    		return false;
    
    	if( !( iYear % 4 ) )
    		return true;
    
    	return false;
    }
    
    int GetDayInYear( int iYear, int iMonth, int iDay )
    {//成功则返回1-366中的一个数失败则返回-1
    	if( iYear < 0 )
    		return -1;
    
    	if( iMonth > 13 || iMonth < 1 )
    		return -1;
    
    	const int leapYear[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    	const int noLeapYear[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    
    	int i;
    	int iCurMonth = iMonth - 1;
    	int iIndex = 0;
    	if( isLeapYear( iYear ) )
    	{//闰年
    		for( i = 0; i < iCurMonth; i++ )
    		{
    			iIndex += leapYear[i];
    		}
    
    		if( iDay > leapYear[i] || iDay < 1 )
    			return -1;
    
    		iIndex += iDay;
    	}
    	else
    	{
    		for( i = 0; i < iCurMonth; i++ )
    		{
    			iIndex += noLeapYear[i];
    		}
    
    		if( iDay > noLeapYear[i] || iDay < 1 )
    			return -1;
    
    		iIndex += iDay;
    	}
    
    	return iIndex;
    }
    
    int main( int argc, char* argv[] )
    {
    	printf( "Day in Year: %d
    " ,GetDayInYear( 2000, 2, 30 ) );
    
    	return 0;
    }


  • 相关阅读:
    声音走样
    Terrain
    输出循环小数
    解决代码中多余的空行
    与二进制有关的几道面试题
    反转一个整数
    DirectX常见编译错误及解决办法
    STLset
    Visual Studio Autoexpand Information for DirectX 9
    素数环谈代码优化
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3236847.html
Copyright © 2011-2022 走看看