看看我这几道程序有什么问题?
3,已知两个日期(YYMMDD),编写一函数,计算两个日期相差的天数。
#include "stdio.h"
#include "stdlib.h"
struct data
{int year;int month;int day;};
calculate(struct data* p1,struct data* p2)
void main()
{
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
struct data* p,*p1,*p2;
p1=p=(struct data*)malloc(sizeof(struct data));
scanf("%d%d%d",&p1->year,&p1->month,&p1->day);
p2=p=(struct data*)malloc(sizeof(struct data*));
scanf("%d%d%d",&p2->year,&p2->month,&p2->day);
calculate(struct data* p1,struct data* p2)
}
void calculate(struct data* p1,struct data* p2)
{
int year,sum1,sum2,sum=0;int year_days=365;sum1=0;sum2=0;
if(p1->year>p2-year)
{
sum=(p1->year-p2-year)*year_days;
year=p2->year;
for(year;year<p1->year;year++)
{
if((year%4==0&&year%100!=0)||year%400==0)
sum=sum+1;
}
For(int i=1;i<p1->month;i++)
{sum1+=a[i];
}
For(int i=1;i<p2->month;i++)
{sum2+=a[i];
}
If(((p2->year%4==0&&p2->year%100!=0)||p2->year%400==0)&&p2->month>2)
Sum2=sum2+1;
Sum1=sum1+p1->day;sum2=sum2+p2->day;sum=sum+(sum1-sum2);
}
if(p1->year<p2->year){
sum=(p2->year-p1-year)*year_days;
year=p1->year;
for(year;year<p2->year;year++)
{if((year%4==0&&year%100!=0)||year%400==0)
sum=sum+1;
}
For(int i=1;i<p2->month;i++)
{sum2+=a[i];
}
For(int i=1;i<p1->month;i++)
{sum1+=a[i];
}
If(((p1->year%4==0&&p1->year%100!=0)||p1->year%400==0)&&p1->month>2)
Sum1=sum1+1;
Sum1=sum1+p1->day;sum2=sum2+p2->day;sum=sum+(sum2-sum1);
}
Else {
For(int i=1;i<p1->month;i++)
{
sum1+=a[i];
}
If(((p1->year%4==0&&p1->year%100!=0)||p1->year%400==0)&&p1->month>2)
{
sum1=sum1+1
}
For(int i=1;i<p2->month;i++)
{
sum2+=a[i];
}
If(((p2->year%4==0&&p2->year%100!=0)||p2->year%400==0)&&p2->month>2)
{
{
Sum2=sum2+1;
}
Sum1=sum1+p1->day;sum2=sum2+p2->day;sum=sum+(sum1-sum2);
}
}