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

来源:互联网 发布:山东11选5遗漏数据查询 编辑:程序博客网 时间:2024/06/05 09:55
/*         * 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;}elsereturn false;}elsereturn false;}elsereturn 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; }elsereturn false;}