雍正铜钱能值多少钱呢:帮忙解决一下C语言求日期差的问题!谢谢!

来源:百度文库 编辑:高校问答 时间:2024/05/11 03:18:39
【问题描述】
结构
struct Date {
int year;
int month;
int day;
};
利用该结构编写一个程序用来计算两个日期之间相差的天数。

【输入形式】
输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。
【输出形式】
第二个日期与第一个日期间相差的天数。
【输入样例】
2003 3 25
2003 3 29
【输出样例】

4

#include<stdio.h>
struct date {
int year;
int month;
int day;
};

main()
{
struct date date1,date2;
int days;
int day=0,year=0;
int daytab1[]={31,28,31,30,31,30,31,31,30,31,30,31};
int daytab2[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;

scanf("%d%d%d",&date1.year,&date1.month,&date1.day);
scanf("%d%d%d",&date2.year,&date2.month,&date2.day);

if((date1.year%4==0&&date1.year%100!=0)||(date1.year%400==0))
{
daytab1[1]=29;
year=366;
}
else
{
daytab1[1]=28;
year=365;
}

if((date2.year%4==0&&date2.year%100!=0)||(date2.year%400==0))
{
daytab2[1]=29;
year=366;
}
else
{
daytab2[1]=28;
year=365;
}

if(date2.year>=date1.year)
{
if(date1.year==date2.year&&date2.month>=date1.month)
{
if(date1.year==date2.year&&date1.month==date2.month&&date2.day>=date1.day)
days=date2.day-date1.day;
else
{
for(i=date2.month-1;i>date1.month;i--)
{
days=date2.day;
days=days+daytab1[i-1];
}
days=days+(daytab1[date1.month-1]-date1.day);
}

}
}
else
{
if(daytab1[1]==28)
days=(date2.year-date1.year)*365+daytab1[date1.month-1]-date1.day+date2.day;
else if(daytab1[1]==29)
days=(date2.year-date1.year)*365+daytab1[date1.month-1]-date1.day+date2.day+1;
}

printf("%d\n",days);

}
谢谢大家,帮忙改一下,修改成功会追加分数!
修改好一个问题了,现在就是一个问题,就是年份不同怎么写啊,好像很晕哦,我反应不过来了,谢谢帮忙谢谢!
if(date2.year>=date1.year)
{
if(date1.year==date2.year&&date2.month>=date1.month)
{
if(date1.year==date2.year&&date1.month==date2.month&&date2.day>=date1.day)
days=date2.day-date1.day;
else
{
days=date2.day;
for(i=date2.month-1;i>date1.month;i--)
days=days+daytab1[i-1];
days=days+(daytab1[date1.month-1]-date1.day);
}

}
}
else
{
if(daytab1[1]==28)
days=(date2.year-date1.year)*365+daytab1[date1.month-1]-date1.day+date2.day;
else if(daytab1[1]==29)
days=(date2.year-date1.year)*365+daytab1[date1.month-1]-date1.day+date2.day+1;
}

main()
{
struct date date1,date2;
int days,days1=0,days2=0;
int daytab[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i;
//大概如此可能部分下标存在错误,自己调试修改吧
scanf("%d%d%d",&date1.year,&date1.month,&date1.day);
scanf("%d%d%d",&date2.year,&date2.month,&date2.day);
//计算从当年元月1日到的天数
for(i=0;i<date1.month;i++)
{
days1 += daytab[i];
}

if((date1.year%4==0&&date1.year%100!=0)||(date1.year%400==0) && date1.month>2)
{
days1++;
}
days1 += date1.day;

//
for(i=date1.year;i<date2.year;i++)
{
days2 += 365;
if((date2.year%4==0&&date2.year%100!=0)||(date2.year%400==0))
{
days2++;
}
}

for(i=0;i<date2.month;i++)
{
days2 += daytab[i];
}

if((date2.year%4==0&&date2.year%100!=0)||(date2.year%400==0) && date2.month>2)
{
days2 ++;
}
days2 += date1.day;

days=day2-day1;

printf("%d\n",days);

}