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

代码运行超时问题

我想问一下老师为什么这个代码会提示运行超时,是教程里面的一道题目,计算2008年8月8是该年中的某一天,代码算法是我自己写的,跟“不会了怎么办“里面的不一样。我想请老师看看这个程序本身有没有错误,是不是根本不能解决这个问题?

#include <stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

     * 请使用swtich语句,if...else语句完成本题

     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

     * 小编还是希望大家独立完成哦~

     */

     month-=1;

     for(;month>=1;month--){

         

     switch(month){

         case 1:

            day+=31;

            break;

         case 2:

            day+=28;

            break;

         case 3:

            day+=31;

            break;

         case 4:

            day+=30;

            break;

         case 5:

            day+=31;

            break;

         case 6:

            day+=30;

            break;

         case 7:

            day+=31;

            break;

       }

     }

    if(year/4==0&&year/100!=0||year/400==0){

        day+=1;

    }

    printf("%d\n",day);

    return 0;


提问者:pengxiaojun 2015-06-17 10:49

个回答

  • pengxiaojun
    2015-06-17 15:02:34

    代码修改一下,已经可以了。我在自己电脑上运行出结果了,没有问题。

    #include <stdio.h>

    int main() 

        /* 定义需要计算的日期 */

        int year = 2008;

        int month = 8;

        int day = 8;

        /*

         * 请使用swtich语句,if...else语句完成本题

         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

         * 小编还是希望大家独立完成哦~

         */

         month-=1;

         for(;month>=1;month--){

             

         switch(month){

             case 1:

                day+=31;

                break;

             case 2:

                day+=28;

                break;

             case 3:

                day+=31;

                break;

             case 4:

                day+=30;

                break;

             case 5:

                day+=31;

                break;

             case 6:

                day+=30;

                break;

             case 7:

                day+=31;

                break;

            

            case 8:

                day+=31;

                break;

            case 9:

                day+=30;

                break;

            case 10:

                day+=31;

                break;

            case 11:

                day+=30;

                break;

            case 12:

                day+=31;

                break;

           }

         }

        if((year%4==0&&year%1000!=0)||year%400==0){

            day+=1;

        }

        printf("%d\n",day);

        return 0;