求大佬指教为啥运行成功输出错误

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

慕数据3556412

2022-11-11 17:25

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum=0;

    int flag;

    /*

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

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

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

     */

    switch(month)

    { 

        case 1:sum+=31;break;

        case 3:sum+=31;break;

        case 5:sum+=31;break;

        case 7:sum+=31;break;

        case 8:sum+=31;break;

        case 10:sum+=31;break;

        case 12:sum+=31;break;

        case 4:sum+=30;break;

        case 6:sum+=30;break;

        case 9:sum+=30;break;

        case 11:sum+=30;break;

        case 2:sum+=28;break;

    }

    sum=sum+8;

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

    {

        flag=0;

    }

    else

    {

        flag=1;

    }

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

    {

        sum++;

    }

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

    


写回答 关注

1回答

  • weixin_慕仙4062266
    2022-11-13 10:32:46

    你的case得按数字的顺序来,要从case 1按顺序写到case 12才行,因为case语句是从上到下执行的,你这样写的话,这个程序会从case 8就跳出来,所以就相当于你只是把1、3、5、7、8月的天数加在了一起,少了2、4、6月啊,肯定错了,而且你要把一月设置为0天,因为你看啊,如果我们现在这个题目不是八月而是让你找出一月八号是第几天,你现在已经把一月的天数设置成了31天,然后你从case语句中跳出来之后还把总天数加了8,也就是说现在就有31+8=39天了,一月八号怎么也不可能是一年里的第39天吧

    慕数据355... 回复weixin...

    谢谢,大佬

    2022-11-14 14:33:30

    共 2 条回复 >

C语言入门

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

926019 学习 · 20793 问题

查看课程

相似问题