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

怎么算出来结果不对?

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

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

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

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

     */

    int sum;

    for(sum=1;sum<=12;sum++)

    {

        switch(sum)

        {

            case 1:

            if(month>=1)

            {

                day+=0;

            }

            else break;

        

            case 2:

            if(month>=2)

            {

                day+=31;

            }

            else break;

            

            case 3:

            if(month>=3)

            {

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

                {

                    day+=29;

                }

                else

                {

                    day+=28;

                }

            }

            else break;

            

            case 4:

            if(month>=4)

            {

                day+=31;

            }

            else break;

            

            case 5:

            if(month>=5)

            {

                day+=30;

            }

            else break;

            

            case 6:

            if(month>=6)

            {

                day+=31;

            }

            else break;        

            

            case 7:

            if(month>=7)

            {

                day+=30;

            }

            else break;           

            

            case 8:

            if(month>=8)

            {

                day+=31;

            }

            else break;   

            

            case 9:

            if(month>=9)

            {

                day+=31;

            }

            else break;

        

            case 10:

            if(month>=10)

            {

                day+=30;

            }

            else break;

        

            case 11:

            if(month>=11)

            {

                day+=31;

            }

            else break;

        

            case 12:

            if(month>=12)

            {

                day+=30;

            }

            else break;

        }

    }

    printf("%d",day);

  

return 0;

}






正在回答

3 回答

我给楼上补充一下吧,你这个确实是sum=1的时候就运行出结果了。首先你在case语句中使用的是if-else语句;sum=1时,执行case1,注意:此时并没有执行break语句,因为if语句成立(if不成立才执行else语句);case1执行结束,没有break,执行case2,一直往下加,直到month=8。下面的month>=9不成立,执行else语句(执行break),跳出循环,然后sum++,再执行一遍case。

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

王师1984 提问者

非常感谢!
2018-04-24 回复 有任何疑惑可以回复我~

你的代码根本用不上for,用了反而错了,因为当sum等2的时候,就从case 2开始执行了,本来sum=1的时候已经得到结果了,你在让day+=31,明显重复了

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

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int sumday=0;


    switch(month)

{

case 1:sumday=day;break;

case 2:sumday=31+day;break;

case 3:sumday=59+day;break;

case 4:sumday=90+day;break;

case 5:sumday=120+day;break;

case 6:sumday=151+day;break;

case 7:sumday=181+day;break;

case 8:sumday=212+day;break;

case 9:sumday=243+day;break;

case 10:sumday=273+day;break;

case 11:sumday=304+day;break;

case 12:sumday=334+day;break;

default:break;

if(month>2)

{

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

{

sumday=sumday+1;

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

}

else

{

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

}

else

{

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


return 0;

}



可以把判断闰年放在最后


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

举报

0/150
提交
取消

怎么算出来结果不对?

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