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

有问题,求教

#include <stdio.h>

int main() 

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum;

    switch(month)

    {

        case 12:

            sum += 30;

        case 11:

            sum += 31;

        case 10:

            sum += 30;

        case 9:

            sum += 31;

        case 8:

            sum += 31;

        case 7:

            sum += 30;

        case 6:

            sum += 31;

        case 5:

            sum += 30;

        case 4:

            sum += 31;

        case 3:

            sum += 28;

        case 2:

            sum += 31;

        case 1:

            sum += 0;

            break;

        default:

            printf("搞事情?");

            break;

    }

    sum += day;

    if(year%4 == 0)

    {

        sum += 1;

    }

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

return 0;

}

不知为啥结果算出来几百万,还是个变量,点一次一个不同的计算结果,本以为想到了一个不错的方法


正在回答

3 回答

sum没有赋初值,附了初值后就是对的了

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

我一开始也是这么写的,上网查了下好像不能这么写。看到有java的是这么写的。还有注意8月8日是算到7月底加8天

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

你的 case 后面都缺少break,应该是每一句 case 后面都加上 break

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

INFINITY0009 提问者

是故意不写break的,假如month是8月,那就可以从12月往前找,找到8月的位置,因为没有break,所以就可以把1月到7月的日子加进sum里了,还是说switch语句不能这么用?
2021-07-31 回复 有任何疑惑可以回复我~
#2

孙六耳 回复 INFINITY0009 提问者

不加break的话case8和后面break前的每个case数都会被取到
2021-08-01 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

有问题,求教

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