第 20 題 - 解答


#include <stdio.h>
int main()
{
   int start,end,start_y,start_m,start_d,end_y,end_m,end_d;
   int months[]={0,31,59,90,120,151,181,212,243,273,304,334,365};
   int days,temp; 
   printf("日期1:");
   scanf("%d",&start);
   printf("日期2:");
   scanf("%d",&end);
   if(start>end){
        temp=start;
        start=end;
        end=temp;
   }
   start_y=start/10000;
   start=start%10000;
   start_m=start/100;
   start_d=start%100;
   end_y=end/10000;
   end=end%10000;
   end_m=end/100;
   end_d=end%100;
   if(start_y==end_y){
        if(start_m==end_m){
             days=end_d-start_d; 
             printf("相差%d天\n",days);
       }else{
            days=months[end_m-1]+end_d-months[start_m-1]-start_d;
            printf("相差%d天\n",days);
       }
   }else{
        days=(365-months[start_m-1]-start_d); 
        days+=365*(end_y-start_y-1);
        days+=months[end_m-1]+end_d; 
        printf("相差%d天\n",days);
   }
   return 0;
}

考試版本
#include <stdio.h>
int main()
{
   int start,end,start_y,start_m,start_d,end_y,end_m,end_d;
   int months[]={0,31,59,90,120,151,181,212,243,273,304,334,365};
   int days,temp; 
   scanf("%d",&start);
   scanf("%d",&end);
   if(start>end){
       temp=start;
       start=end;
       end=temp;
   }
   start_y=start/10000;
   start=start%10000;
   start_m=start/100;
   start_d=start%100;
   end_y=end/10000;
   end=end%10000;
   end_m=end/100;
   end_d=end%100;
   if(start_y==end_y){
       if(start_m==end_m){
           days=end_d-start_d; 
           printf("%d\n",days);
       }else{
           days=months[end_m-1]+end_d-months[start_m-1]-start_d;
           printf("%d\n",days);
       }
   }else{
       days=(365-months[start_m-1]-start_d); 
       days+=365*(end_y-start_y-1);
       days+=months[end_m-1]+end_d; 
       printf("%d\n",days);
   }
   return 0;
}