您的位置:首页 > 编程语言 > C语言/C++

C++练习之 判断某一天是该年的第几天

2012-12-04 15:05 330 查看
#include <iostream>

using namespace std;

int main()

{

 bool judge(int year,int month,int day);

 int year,month,day,i,j,sum=0;

 int a[7]={1,3,5,7,8,10,12};//此数组包含31天的月份

 int b[4]={4,6,9,11};//此数组包含30天的月份

 cout<<"please input year:";

 cin>>year;

 cout<<"please input month:";

 cin>>month;

 cout<<"please input day:";

 cin>>day;

 while(judge(year,month,day)==0)//此参数为判断输入的年月日是否合法,若不合法则重新输入,直到合法为止。

 {

  cout<<"error!"<<endl<<"please input again"<<endl;

  cout<<"please input year:";

  cin>>year;

  cout<<"please input month:";

  cin>>month;

  cout<<"please input day:";

  cin>>day;

 }

 for(i=0;a[i]<=month;i++)//此语句求出1月到所输入月份的天数之和。

  sum+=31;

 for(j=0;b[j]<=month;j++)//此语句求出4月到所输入月份的天数之和并与上面求出的相加。

  sum+=30;

 if((year%4==0&&year%100!=0)||(year%400==0))//判断是否为闰年。

 {

  if(month>=2)

   sum+=29;

 }

 else

 {

  if(month>=2)

   sum+=28;

 }

sum+=day;//最后将该月份天数加起来。

 cout<<"这是该年的第"<<sum<<"天"<<endl;

return 0;

}

bool judge(int year,int month,int day)//判断年月日是否合法。

{

 bool p,pyear,pmonth,pday;

 if(year>0)

  pyear=1;

 else

  pyear=0;

 if(month>=1&&month<=12)

  pmonth=1;

 else

  pmonth=0;

 if(month==4&&month==6&&month==9&&month==11)

 {

  if(day>=1&&day<=30)

   pday=1;

  else

   pday=0;

 }

 else if(month==2)

 {

  if((year%4==0&&year%100!=0)||(year%400==0))

  {

   if(day>=1&&day<=29)

    pday=1;

   else

    pday=0;

  }

  else

  {

   if(day>=1&&day<=28)

    pday=1;

   else

    pday=0;

  }

 }

 else

 {

  if(day>=1&&day<=31)

   pday=1;

  else

   pday=0;

 }

 if(pyear==1&&pmonth==1&&pday==1)

  p=1;

 else

  p=0;

 return p;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: