麻烦指导一下错在哪了

来源:4-17 switch与if语句的应用

楚辞9318342

2021-03-01 20:51

#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回答

  • qq_慕斯3305490
    2021-03-01 21:16:40
    已采纳

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

    qq_慕斯3... 回复楚辞9318...

    我写的也是跟参考答案那样差不多的

    2021-03-01 21:28:14

    共 2 条回复 >

  • 蓝色的蓝莓
    2021-03-31 16:35:30

    http://img.mukewang.com/6064326600017ae208620361.jpg

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

    希望能帮到你。

    蓝色的蓝莓

    本人佩服那位大神的c语言基础,我也是想了一会才明白哪位大神的原理,一个字:服

    2021-03-31 16:37:31

    共 1 条回复 >

C语言入门

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

926212 学习 · 20797 问题

查看课程

相似问题