C++自定义函数判断某年某月某日是这一年中第几天

 更新时间:2016年06月01日 11:25:30   作者:宾宾琪琪  
这篇文章主要介绍了C++自定义函数判断某年某月某日是这一年中第几天的方法,涉及C++日期与时间操作相关技巧,需要的朋友可以参考下

本文实例讲述了C++自定义函数判断某年某月某日是这一年中第几天的方法。分享给大家供大家参考,具体如下:

/*
* 作 者: 刘同宾
* 完成日期:2012 年 11 月 30 日
* 版 本 号:v1.0
*
* 输入描述:
* 问题描述:编写函数判断某年某月某日这一年中是第几天,在主函数中调用该函数。
* 程序输出:
* 问题分析:略
* 算法设计:略
*/
#include<iostream>
using namespace std;
int main()
{
 void f(int year,int month,int day);
 int year,month,day;
 cout<<"请输入年月日:"<<endl;
 f(year,month,day);
 cout<<endl;
 return 0;
}
//判断输入的年月日是这一年中的第几天!
void f(int year,int month,int day)
{
 int f1(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}; //定义数组 各月的天数
 int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
 while(1)
 {
  cin>>year>>month>>day;
  if(f1(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;
 }
}
//判断是否为闰年!
int leap(int year)
{
 if((year%4==0&&year%400==0)||(year&4==0&&year%100!=0))
 {
  return true;
 }
 else
  return false;
}
//判断输入是否合法!
int f1(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
   return false;
 }
 else if(month==2||month==4||month==6||month==9||month==11)
 {
  if(day>0&&day<=30)
  {
   return true;
  }
  else
   return false;
 }
 else
 {
  if(leap(year))
  {
   if(day>0&&day<=29)
   {
    return true;
   }
   else
    return false;
  }
  else
  {
   if(day>0&&day<=28)
   {
    return true;
   }
   else
    return false;
  }
 }
}

运行效果如下图所示:

PS:这里再为大家推荐一款C语言在线格式化工具,相信在以后的开发中可以用得上:

C语言风格/HTML/CSS/json代码格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json

希望本文所述对大家C++程序设计有所帮助。

相关文章

  • C++ Dijkstra算法之求图中任意两顶点的最短路径

    C++ Dijkstra算法之求图中任意两顶点的最短路径

    这篇文章主要为大家详细介绍了用C++经典算法-Dijkstra算法求任意两顶点之间的最短路径,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C语言实现Fibonacci数列递归

    C语言实现Fibonacci数列递归

    这篇文章主要介绍了C语言实现Fibonacci数列递归,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • C语言数据结构之循环链表的简单实例

    C语言数据结构之循环链表的简单实例

    这篇文章主要介绍了C语言数据结构之循环链表的简单实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • C语言冒泡排序法心得

    C语言冒泡排序法心得

    相信学过C语言的朋友都知道,在C语言中,常用的排序算法有:冒泡排序、快速排序、插入排序、选择排序、希尔排序、堆排序以及归并排序等等。就算没有用过,相信大家也有所耳闻。在这里呢,主要是想和大家一起来探讨探讨C语言的冒泡排序法,
    2016-01-01
  • Cocos2d-x 3.x入门教程(二):Node节点类

    Cocos2d-x 3.x入门教程(二):Node节点类

    这篇文章主要介绍了Cocos2d-x 3.x入门教程(二):Node节点类,本文对Node节点类做了一个简明讲解及Node类提供的函数做了说明,需要的朋友可以参考下
    2014-11-11
  • 深入了解C语言结构化的程序设计

    深入了解C语言结构化的程序设计

    这篇文章主要介绍了C语言编程中程序的一些基本的编写优化技巧,文中涉及到了基础的C程序内存方面的知识,非常推荐!需要的朋友可以参考下
    2021-07-07
  • C++实现基于EASYX库扫描线算法

    C++实现基于EASYX库扫描线算法

    这篇文章主要为大家详细介绍了C++实现基于EASYX库扫描线算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 详解C语言中动态内存管理及柔性数组的使用

    详解C语言中动态内存管理及柔性数组的使用

    这篇文章主要为大家详细介绍一下C语言中动态内存管理以及柔性数组的使用方法,文中的示例代码讲解详细,对我们学习C语言有一定的帮助,需要的可以参考一下
    2022-07-07
  • C++移动语义详细介绍使用

    C++移动语义详细介绍使用

    首先,移动语义和完美转发这两个概念是在C++的模板编程的基础上,新增的特性,主要是配合模板来使用。本篇会从C++的值类型,到移动拷贝与移动赋值来理解移动语义与完美转发
    2023-01-01
  • C++简明分析讲解布尔类型及引用

    C++简明分析讲解布尔类型及引用

    布尔型(Boolean),是一种类型变量类型,引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样
    2022-04-04

最新评论