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

我算的结果不对,请问我哪里写错了?

#include <stdio.h>
int main()

    int year = 2008;
    int month = 8;
    int day = 8;
    int i=1,j=0;//变量
   
    for (i=1; i < month ; i++)
    {
        switch(month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            j+=31;
            break;
        case 4:
        case 9:
        case 11:
            j+=30;
            break;
        case 2:
            if ( year % 4 ==0)
            {
                j+=29;
                break;
            }
            else
            {
                j+=28;
                break;
            }
        }
          
    }
     j+=day;
            printf("%d年%d月%d天是该年的第%d天。", year,month,day,j);
 
 return 0;
}


我算的答案是225天,我不知道哪里错了。

感谢帮助!

正在回答

3 回答

逻辑有错误,你这样写比如case 2=29+8,正确的应该是31+8,其他的case计算有的有错有的没错我没认真去研究它是怎么计算的,但是整体计算逻辑上肯定错了,计算天数应该是本月之前的月份天数加上本月日期,而不是当月的天数加上日期,你再思考下。

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

LTrewin

你还漏了6月
2018-07-31 回复 有任何疑惑可以回复我~
#2

慕九州8237304 提问者

懂了!谢谢你!?
2018-07-31 回复 有任何疑惑可以回复我~

你的 i<month;i++;此时month为8,而switch内的是month,从而导致你的case 8循环了七次,若改为switch( i ) 再加上case 6 的话也是正确的。

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

Fosenc

自我见解
2018-08-02 回复 有任何疑惑可以回复我~
#2

Fosenc

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


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

举报

0/150
提交
取消

我算的结果不对,请问我哪里写错了?

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