有没有大佬跟我解释一下这题

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

慕神5149347

2019-03-04 20:51

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用swtich语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int date = 0;
    switch (month)
    {
        case 12:    date += 30;
        case 11:    date += 31;
        case 10:    date += 30;
        case 9:    date += 31;
        case 8:    date += 31;
        case 7:    date += 30;
        case 6:    date += 31;
        case 5:    date += 30;
        case 4:    date += 31;
        case 3:    if(year%400 != 0 && year%4 == 0){
                        date += 29;
                    }else{
                        date += 28;}
        case 2:    date += 31;
        default:    date += 8,printf("2008年8月8日是该年的第%d天",date);break;
    }
 return 0;
}

写回答 关注

2回答

  • EricGo101
    2019-05-05 22:19:42

    switch()括号里应该写month-1,八月只过了八天,不能加上八月,执行顺序是switch(7),接着执行 case 7语句,date开始累加,case里没有break语句,所以会一直往下执行,if应该在case 2写,把case 1写上,累加了1~7月的天数,最后在default里加上day(即date += day; ),使用day可以提高代码的复用性。最后贴上我自己的代码:

    #include <stdio.h>
    int main() 
    { 
        /* 定义需要计算的日期 */
        int year = 2008;
        int month = 8;
        int day = 8;
        /*
         * 请使用switch语句,if...else语句完成本题
         * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
         * 小编还是希望大家独立完成哦~
         */
        int sum = 0;
         
        switch(month - 1){
            
            case 12:
                sum += 31;
            case 11:
                sum += 30;
            case 10:
                sum += 31;
            case 9:
                sum += 30;
            case 8:
                sum += 31;
            case 7:
                sum += 31;
            case 6:
                sum += 30;
            case 5:
                sum += 31;
            case 4:
                sum += 30;
            case 3:
                sum += 31;
            case 2:
                if(year%4 == 0)
                    sum += 29;
                else
                    sum += 28;
            case 1:
                sum += 31;
            default:
                sum += day;
                break;
        } 
        printf("2008年8月8日是该年的第%d天",sum);
        
        return 0;
    }

    你自己理解理解!

  • 江郎蚕丝棉被
    2019-03-05 09:35:16

    你这没错啊

    慕神5149...

    我知道没错,我只是想知道怎么运算的

    2019-03-05 16:57:06

    共 1 条回复 >

C语言入门

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

926206 学习 · 20797 问题

查看课程

相似问题