第 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;
}