本文實例講述了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; } }}
運行效果如下圖所示: