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

大神求解答一下为何default后还会运算后面的算式,比如我月份输入18,照样能计算出来,有什么方法解决?

#include <stdio.h>

int main() 

    int year = 2008,month = 8,day = 8;

    int sum,flag;

    switch(month)

    {

        case 1:sum=0;break;

        case 2:sum=31;break;

        case 3:sum=59;break;

        case 4:sum=90;break;

        case 5:sum=120;break;

        case 6:sum=151;break;

        case 7:sum=181;break;

        case 8:sum=212;break;

        case 9:sum=243;break;

        case 10:sum=273;break;

        case 11:sum=303;break;

        case 12:sum=334;break;

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

    }

    if((year%4==0&&year%100!=0)||year%400==0)//可以双括号

    {flag=1;}

    else

    {flag=0;}

    if(flag==1&&month>2)

    {sum++;}

    sum=sum+day;

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

    return 0;//我输入18月,显示出来的就是“一年只有12个月哟~2008年18月8日这一天是该年中的第8天” 也就是把sum默认为0了吗?有什么方法解决呢?

}


正在回答

2 回答

应该不行吧,你可以整体做一个判断输出错误就直接结束,和所有的语句分开,输入正确的再执行你写的代码。

重新构思一下

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

时间你别催 提问者

!对哈,感谢感谢!!
2015-12-15 回复 有任何疑惑可以回复我~

因为你那个default只是控制switch判断里的代码,和你外面的代码并没有关系啊

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

时间你别催 提问者

哦哦,那可以在default完后加goto直接跳过下面算式的部分吗?
2015-12-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

大神求解答一下为何default后还会运算后面的算式,比如我月份输入18,照样能计算出来,有什么方法解决?

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