请大家帮我看看这个程序(能运行)哪里出问题了?
/*输入年月日,输出这是该年的第几天,尚未添加输入错误判断功能*/#include "stdafx.h"
#define Y p->year
#define M p->month
#define D p->day
#include<iostream>
#include<cmath>
using namespace std;
bool judge(int);
int add(int);
struct date
{int year;
int month;
int day;
};
int main()
{date * p;
p=new date;
cout<<"输入年,月,日"<<endl;
cout<<"年:"<<endl;
cin>>Y;
cout<<"月:"<<endl;
cin>>M;
cout<<"日:"<<endl;
cin>>D;
int count=0,i;
bool T=judge(Y);//判断该年是否为闰年,若是则T为true
for(i=1;i<=(M-1);i++)//此处循环的作用是当月份为2时,根据T的情况给count加相应的天数
{if(i==2)
{if(T)count=count+29;
else count=count+28;}
}
count=count+add(M)+D;//天数=二月份的天数+其他完整的月份的天数+剩余的天数
cout<<"您输入的日期是"<<Y<<"年的第"<<count<<"天"<<endl;
delete p;
return 0;
}
int add(int k)
{int count=0,i;
for(i=1;i<=k-1;i++)//一月至七月每隔一月是31天,八月至十二月每隔一月是31天
{if(i<=7)
if((i%2==0)&&(i!=2))count=count+30;
else count=count+31;
else
if((i-7)%2==0)count=count+30;
else count=count+31;
}
return count;
}
bool judge(int t)
{
bool T=false;
if((abs(2004-t)%4==0)T=true;//2004年是闰年,那么和它相差4年的年份就应该是闰年
return T;
}
输入2008 3 1
输出:“您输入的日期是2008年的第92天”
显然错误,请问错在哪里?