c++ 求输入年月日信息,输出这一天是这一年的第几天

如题所述

第1个回答  2011-12-06
#include <iostream>
using namespace std;

bool isLeapYear(int y); //声明

//定义日期结构体,包括年、月、日
struct
{
int year; //年
int month; //月
int day; //日
}date; //声明实体日期date

int main()
{
int i,days; //设输入日期在该年中为第days天

//每年12个月的天数存放在数组里,2月初始为平年
int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

//输入年月日
cout<<"input year:"<<endl;
cin>>date.year;
cout<<"input month:"<<endl;
cin>>date.month;
cout<<"input day:"<<endl;
cin>>date.day;

//初始化days
days=0;

//从第1个月到输入月数的前一个月累加天数
for (i=1;i<date.month;i++)
{
days+=day_tab[i];
}

//累加输入当月的天数
days+=date.day;

//判断闰年,如果是闰年,则多加一天
if (isLeapYear(date.year) && date.month>=3)
{
days+=1;
}

//输出结果
cout<<date.month<<"/"<<date.day<<" is the "<<days
<<"th day in "<<date.year<<"."<<endl;

return 0;
}

//判断是否为闰年
bool isLeapYear(int y)
{
if(date.year%4==0 && date.year%100!=0 || date.year%400==0)
{
return true;
}
return false;
}本回答被提问者采纳
第2个回答  2011-12-07
#include"iostream.h"
int rn( int year)
{
//判断是不是润年
if(year%4==0 && year%100!=0 || year%400==0)
return 1;
else
return 0;
}
int check(int b, int c)
{
//检验输入是否合理
if(b>12 || c>31)
return 1;
else
return 0;
}
void main()
{
//输入具体的某一天,输出是今年的第多少天
int year,m,day,sum=0,i;
int a[11]={31,31,30,31,30,31,31,30,31,31,30};
cin>>year>>m>>day;
cout<<"你输入的年月日为:"<<year<<"年"<<m<<"月"<<day<<"日"<<endl;
if(check(m,day))
{
cout<<"输入有误!!!"<<endl;
}
if(check(m,day)==0)
{
if(m==1)
{
sum+=day;
}
else
if(m!=1)
{
for(i=1;i<=m-2;i++)
{
sum+=a[i];
}
if(rn(year))
{
sum+=29+day;
}
else
{
sum+=28+day;
}
}
cout<<"今天是"<<year<<"年第"<<sum<<"天"<<endl;
}

}
相似回答