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

请大家看看这个代码那里错了,我用VC真确结果,但是网站就是错误,如果代码正确,我想请问下谁可以告诉我慕课网判断正确是如果实现的,采用了什么样的方法?


#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum =0;

     if(month>2)

     {

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

           {

            sum=60;

            }

            else

            {

            sum=59;

            }

     }

     else

     {

         sum=31;

     }

    switch(month)

    {

        case 4:sum+=31;break;

        case 5:sum+=31+30;break;

        case 6:sum+=31+30+31;break;

        case 7:sum+=(31+30)*2;break;

        case 8:sum+=31*3+30*2;break;

        case 9:sum+=31*4+30*2;break;

        case 10:sum+=31*4+30*3;break;

        case 11:sum+=31*5+30*3;break;

        case 12:sum+=31*5+30*4;break;

        default:printf("一年只有12个月喔~");break;

    }

    sum=sum+day;

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

    return 0;

}


正在回答

4 回答

多提交几次,你的代码效率太低,答案出来要比较久,所以有可能出现过不了的情况


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

侠客岛的含笑 提问者

非常感谢!
2016-02-20 回复 有任何疑惑可以回复我~
#include <stdio.h>
int main() 
{ 
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用swtich语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int date = 0;
    switch (month)
    {
        case 12:    date += 30;
        case 11:    date += 31;
        case 10:    date += 30;
        case 9:    date += 31;
        case 8:    date += 31;
        case 7:    date += 30;
        case 6:    date += 31;
        case 5:    date += 30;
        case 4:    date += 31;
        case 3:    if(year%400 != 0 && year%4 == 0){
                        date += 29;
                    }else{
                        date += 28;}
        case 2:    date += 31;
        default:    date += 8,printf("2008年8月8日是该年的第%d天",date);break;
    }
	return 0;
}

这个代码是我看到的觉得比较好的,标准答案也没这个好,完美运用了4-16的知识。没事可以翻翻同学代码区,有些人的思路是很好的。可以学习。

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

Johnnylo

标准答案是照顾了所有日期!这个只是为了应付过关而编!
2016-02-22 回复 有任何疑惑可以回复我~
#2

qq_NirvanaLan_0

这个if(year%400 != 0 && year%4 == 0)为什么这样能判定闰年?
2016-03-09 回复 有任何疑惑可以回复我~

你上一章节4-16的文字没仔细看吧?

2、在case子句后如果没有break;会一直往后执行一直到遇到break;才会跳出switch语句。

然后你再看标准答案,他的是不是比你的简单很多?无论是代码量,还是运行效率。


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

不偏不易

你的思路是,1,判断是否大于2月,获得1,2月的sum,然后再用switch进行后续判断。不说效率,理论上是没错的。我复制了一遍你的代码,可以通过啊。
2016-02-20 回复 有任何疑惑可以回复我~

再试试

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

侠客岛的含笑 提问者

不行啊
2016-02-17 回复 有任何疑惑可以回复我~
#2

qq_白鸟青春_0 回复 侠客岛的含笑 提问者

你输入日期2008.1.10,试一试你的程序对不对。你的程序并不能输入小于2月的
2016-03-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请大家看看这个代码那里错了,我用VC真确结果,但是网站就是错误,如果代码正确,我想请问下谁可以告诉我慕课网判断正确是如果实现的,采用了什么样的方法?

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