#include
#include
typedef struct date
{
int year;
int month;
int day;
};
int dayofmonth[12]={31,28,31,30,31,30,31.31,30,31,30,31};
typedef struct date Date;
int isleapyear(int y);//计算是否为闰年;
int islegal(Date x);//计算日期是否合法;
int calcday(Date x);//计算日期是当年的第几天
int main()
{
Date a;
Date b;
printf("Please input the first date:");
scanf("%d %d %d",&a.year,&a.month,&a.day);
printf("Please input the second date:");
scanf("%d %d %d",&b.year,&b.month,&b.day);
int m;
if(islegal(a)==1&&islegal(b)==1&&a.year==b.year)//如果在同一年计算相差天数;
m=calcday(b)-calcday(a);
else
m=-1;//不在同一年视为输入不合法;
printf("Day between two dates:%d",m);
return 0;
}
int isleapyear(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1;
else
return 0;
}
int islegal(Date x)
{
if(x.day>=1&&x.day<=dayofmonth[x.month-1])//判断天数是否在合法范围内
{
if(x.month>=1&&x.month<=12)
return 1;
else
return 0;
}
}
int calcday(Date x)
{//计算日期是该年的第几日
int i,sum=0;
for(i=0;i<=x.month-2;i++)
{
sum=sum+dayofmonth[i];
}
sum=sum+x.day;
if(x.month>2&&isleapyear(x.year)==1)
sum=sum+1;
else
sum=sum+0;
return sum;
}
这个程序刚才的问题是第二个scanf一直无法接收数据
scanf("%d %d %d",&b.year,&b.month,&b.day);
这一句,
还有每次我、输出的值都是-1
现在突然又好了。
问题出在哪里?求大神指教
你写的scanf(""%d%d%d...),格式符号之间不能有空格
可以运行 结果无误 第二个scanf能接受数据 输出结果为-1的原因有 A输入的年份不在同一年 B输入的日期不合法