C++ 输入一个日期,计算这一天是本年的第几天。 求大神帮助

 我来答
心理倾听小依老师
2011-11-04 · TA获得超过685个赞
知道小有建树答主
回答量:348
采纳率:0%
帮助的人:406万
展开全部
#include <iostream>
using namespace std;

struct datetype{
int year;
int month;
int day;
}date;
int main()
{
int i,day_sum;
static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
cout<<"请输入年、月、日:"<<endl;
cin>>date.year>>date.month>>date.day;
day_sum=0;
for(i=1;i<date.month;i++)day_sum+=day_tab[i];
day_sum+=date.day;
if((date.year % 4 == 0 && date.year % 100 != 0 || date.year % 400 ==0) && date.month>2 )
day_sum+=1;
cout<<date.month<<"月"<<date.day<<"日是"<<date.year<<"年的第"<<day_sum<<"天"<<endl;
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
未再功5190
2011-11-04 · 超过17用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:26.2万
展开全部
#include<iostream>
using namespace std;

const int array[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
//判断是否闰年
int leap(int year)//此函数判断是否闰年
{
if( year%400 ==0 || year%100 !=0 && year%4 ==0)
return 1;
else
return 0;
}

int count(int year,int month,int day)//此函数计算天数
{
int result=day;
int i=leap(year);
for(int j=1;j<month;j++)
{
result+=array[i][j];
}
return result;
}
int main()
{
int year,month,day;
cout<<"按次序输入年月日";
cin>>year>>month>>day;
//此处应该增加判断非法输入,比如月份>12,日期大于 31
if((month>12&&month<0)&&(day<0&&day>array[leap(year)][month+1]))
{
cout<<"输入有误!!"<<endl;
return 1;
}else{
int result=count(year,month,day);
cout<<year<<"年"<<month<<"月"<<day<<"日 ";
cout<<"是该年度第 "<<result <<" 天"<<endl;
return 1;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lewabc
2011-11-04 · 超过14用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:38.8万
展开全部
scanf("%d-%d-%d", &year, &month, &day);
tian[1] = tian[3] ..... = tian[12] = 31;
tian[4] = tian[6] ... = tian[11] = 30;
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) tian[2] = 29;
else tian[2] = 28;
tot = 0;
for(int i = 1; i < month; i++) tot+=tian[i];
tot += day;
printf("%d\n", tot);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式