#2461: 還是錯 = =


kevin830222 (kkshyu)


#include<stdio.h>
#include<stdlib.h>
int main()
{
  int y,m,d;
  int m1[13]={0},a;
    for(a=1;a<=12;a++)
      switch(a)
      {
        case 1:m1[a]=31;  break;      
        case 2:m1[a]=28;  break;      
        case 3:m1[a]=31;  break;      
        case 4:m1[a]=30;  break;      
        case 5:m1[a]=31;  break;      
        case 6:m1[a]=30;  break;      
        case 7:m1[a]=31;  break;      
        case 8:m1[a]=31;  break;      
        case 9:m1[a]=30;  break;      
        case 10:m1[a]=31; break;      
        case 11:m1[a]=30; break;      
        case 12:m1[a]=31; break;      
      }
  while(scanf("%d%d%d",&y,&m,&d)==3)
  {
    if((y%4==0&&y%100!=0)||y%400==0) m1[2]=29;
    if(d>m1[m]||m>12||y<1||m<1) {printf("Error\n"); continue;}
    int sum=0;
    for(a=1;a<m;a++)  sum+=m1[a];
    sum+=d;
    if(sum==1) printf("It is 1 day in %d\n",y);
    else printf("It is %d days in %d\n",sum,y);
    m1[2]=28;  
   }
return 0;
}

 

#2463: Re:還是錯 = =


david942j (文旋)


#include
#include
int main()
{
  int y,m,d;
  int m1[13]={0},a;
    for(a=1;a<=12;a++)
      switch(a)
      {
        case 1:m1[a]=31;  break;      
        case 2:m1[a]=28;  break;      
        case 3:m1[a]=31;  break;      
        case 4:m1[a]=30;  break;      
        case 5:m1[a]=31;  break;      
        case 6:m1[a]=30;  break;      
        case 7:m1[a]=31;  break;      
        case 8:m1[a]=31;  break;      
        case 9:m1[a]=30;  break;      
        case 10:m1[a]=31; break;      
        case 11:m1[a]=30; break;      
        case 12:m1[a]=31; break;      
      }
  while(scanf("%d%d%d",&y,&m,&d)==3)
  {
    if((y%4==0&&y%100!=0)||y%400==0) m1[2]=29;
    if(d>m1[m]||m>12||y<1||m<1) {printf("Error\n"); continue;}
    int sum=0;
    for(a=1;a    sum+=d;
    if(sum==1) printf("It is 1 day in %d\n",y);
    else printf("It is %d days in %d\n",sum,y);
    m1[2]=28;  
   }
return 0;
}

 


主要問題在當程式判斷答案是"Error"時

會因為continue導致m1[2]有可能沒有變成28 (保持在29)

另外當d<1也放入"Error"的判斷