为了账号安全,请及时绑定邮箱和手机立即绑定

代码运行超时问题

我想问一下老师为什么这个代码会提示运行超时,是教程里面的一道题目,计算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;


正在回答

1 回答

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

#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;


0 回复 有任何疑惑可以回复我~
#1

sanjiaofeng

“四年一闰,百年不闰,四百年再闰”。 判断方法应该是:year%4==0&&year%100!=0||year%400==0 怎么出现了1000?
2015-07-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

代码运行超时问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信