计算两个日期的天数 C语言 哪里错了

2024年11月22日 19:08
有3个网友回答
网友(1):

你好!!

你的程序思路,都是对的,就是有些细节的地方不对:

    改动一:

       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; i        day +=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);
       }
             
}

网友(2):

#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);
}

满意就给个采纳吧

网友(3):

第一个scanf少一个%