问答详情
源自:4-17 switch与if语句的应用

我这段程序为什么不行啊,大神帮忙看下,跪谢

int sum;

    switch(month)    /*对月份进行情况讨论

    {

        case 1;sum = 0+day;break;

        case 2;sum = 31+day;break;

        case 3;sum = 31+28+day;break;

        case 4;sum = 31+28+31+day;break;

        case 5;sum = 31+28+31+30+day;break;

        case 6;sum = 31+28+31+30+31+day;break;

        case 7;sum = 31+28+31+30+31+30+day;break;

        case 8;sum = 31+28+31+30+31+30+31+day;break;

        case 9;sum = 31+28+31+30+31+30+31+31+day;break;

        case 10;sum = 31+28+31+30+31+30+31+31+30+day;break;

        case 11;sum = 31+28+31+30+31+30+31+31+30+31+day;break;

        case 12;sum = 31+28+31+30+31+30+31+31+30+31+30+day;break;

        default:printf("一年当中只有12个月哦");break;

    }

    sum = sum+day;

    if(year%4 == 0)

    {

       if(month < 3)

         {

         printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);

         }

       printf("%d年%d月%d日是该年的第%d天",year,month,day,sum+1);

    }

    else

    {

    printf(%d年%d月%d日是该年的第%d天",year,month,day,sum);

    }


提问者:慕婉清5674456 2016-03-11 13:50

个回答

  • Ciry
    2016-03-11 15:13:27
    已采纳

    case  X:  后面是冒号不是分号。

    if(year%4 == 0)

        {

           if(month < 3)

             {

                printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);

             }

           else     // 这儿掉了else 补上

             {

               printf("%d年%d月%d日是该年的第%d天",year,month,day,sum+1);

             }

        }

        else

        {

        printf(%d年%d月%d日是该年的第%d天",year,month,day,sum);

        }


  • dongysh
    2016-03-11 15:14:10

    首先,switch中已经+day了,为啥还要sum=sum+day;

    其次,闰年并不是单纯的除以4来计算。

    这是两个主要问题,其他问题就是程序健壮性的问题了,比如day>31等。