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

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

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

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;
}

你自己理解理解!

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

你这没错啊

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

慕神5149347 提问者

我知道没错,我只是想知道怎么运算的
2019-03-05 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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