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

麻烦指导一下错在哪了

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int x, i;

    x == 0;

    switch(month)

    {

        case 1:x += day;break;

        case 2:x += 31;break;

        case 3:x += 28;break;

        case 4:x += 31;break;

        case 5:x += 30;break;

        case 6:x += 31;break;

        case 7:x += 30;break;

        case 8:x += 31;break;

        case 9:x += 31;break;

        case 10:x += 30;break;

        case 11:x += 31;break;

        case 12:x += 30;break;

        default:break;

    }

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

        i=1;

    else

        i=0;

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

        x++;

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

return 0;

}


正在回答

2 回答

case 8:x += 31;break;应该只执行这一句。

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

楚辞9318342 提问者

那我该怎么改呢……
2021-03-01 回复 有任何疑惑可以回复我~
#2

qq_慕斯3305490 回复 楚辞9318342 提问者

我写的也是跟参考答案那样差不多的
2021-03-01 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//6064326600017ae208620361.jpg

有一个大神写的这个代码原理是:当case=8时才开始运行代码,在case12;case 11;case=10;case=9并不会运行代码;是因为month=8,要从8开始,运行8后,为什么不跳出去,而继续运行,是因为没有8的后面并没有break,所以代码就会一直运行,直至遇到default中的break才会跳出,这就导致了date一直进行累加。而你在8的后面加了break,所以导致代码跳出去,从而date并不会进行累加。

希望能帮到你。

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

蓝色的蓝莓

本人佩服那位大神的c语言基础,我也是想了一会才明白哪位大神的原理,一个字:服
2021-03-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

麻烦指导一下错在哪了

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