你好!!
你的程序思路,都是对的,就是有些细节的地方不对:
改动一:
scanf("%d %d %d",&a,&b,&c); // 这里都改成 %d %d %d ,去掉 \n 回车符
scanf("%d %d %d",&d,&e,&f);
改动二:
else if (a==d-1) // 这里的 elseif 中间是有空格的改成 else if
else if(a==d) // 这里的 elseif 中间是有空格的改成 else if
完整的代码,程序是在你代码上面直接修改的:
#include
int leap_year( int );
int year_days( int );
int days(int,int,int);
int leap_year( int year )
{
return ( (year%4==0&& year%100!=0) || year%400==0 ) ? 1 : 0;
}
int year_days(int year)
{
return leap_year( year) ? 366 : 365;
}
int days( int year, int month, int day )
{
int months[13] ={0,31,28,31,30,31,30,31,31,30,31,30,31}, i;
if ( leap_year( year ) && month >2)
day++;
for ( i=1; iday +=months[i];
return day;
}
int main()
{
int leap_year( int );
int year_days( int );
int days(int,int,int);
int a,b,c,d,e,f,m,n,w,z,i;
int y=0;
scanf("%d %d %d",&a,&b,&c); // 这里都改成 %d %d %d ,去掉 \n 回车符
scanf("%d %d %d",&d,&e,&f);
m=days(a,b,c);
w=year_days(a)-m;
n=days(d,e,f);
if(a<(d-1))
{
for(i=a+1;i{
y=y+year_days(i);
}
z=y+w+n;
printf("%ddays\n",z);
}
else if (a==d-1) // 这里的 elseif 中间是有空格的改成 else if
{
z=n+w;
printf("%d days\n",z);
}
else if(a==d) // 这里的 elseif 中间是有空格的改成 else if
{
z=n-m;
if(z==1)
printf("1day\n");
else if (z>1)
printf("%ddays\n",z);
}
}
#include
void main()
{
printf("请输入起始日期的年,月,日\n");
int byear, bmonth, bday;
scanf("%d%d%d", &byear, &bmonth, &bday);
printf("请输入终止日期的年,月,日\n");
int eyear, emonth, eday;
scanf("%d%d%d", &eyear, &emonth, &eday);
int days = 0;
if (byear == eyear)
{
days = days(eyear, emonth, eday) - days(byear, bmonth,bday);
}
else
{
int i;
days = year_days(byear) - days(byear, bmonth, bday);
for (i = byear + 1; i < eyear; ++i)
{
days += year_days(i);
}
days += days(eyear, emonth, eday);
}
printf("终止日期与起始日期之间的天数为%d\n", days);
}
满意就给个采纳吧
第一个scanf少一个%