问答详情
源自:4-17 switch与if语句的应用

为什么输出了32985?求解释

#include <stdio.h>
int main()
{
    int year = 2008;
    int month = 8;
    int day = 8;
    int sum,flag;
    switch(month)
    {
        case 1:sum+=day;break;
        case 2:sum+=31+day;break;
        case 3:sum+=59+day;break;
        case 4:sum+=90+day;break;
        case 5:sum+=120+day;break;
        case 6:sum+=151+day;break;
        case 7:sum+=181+day;break;
        case 8:sum+=212+day;break;
        case 9:sum+=243+day;break;
        case 10:sum+=273+day;break;
        case 11:sum+=304+day;break;
        case 12:sum+=334+day;break;
        default:printf("Get away,bitch!");break;
    }
    if((year%4==0&&year%100!=0)||year%400==0)
        flag=1;
    else   
        flag=0;
   
    if(flag==1&&month>2)
        printf("%d年%d月%d日是本年的第%d天。",year ,month,day,sum++);
    else
        printf("%d年%d月%d日是本年的第%d天。",year ,month,day,sum);
 return 0;
}

提问者:慕莱坞3467181 2019-08-14 14:19

个回答

  • 坚持下去灬
    2019-08-23 09:54:05

    你的问题有2个方面, 一个是前面的公式case 1:sum+=day;break;    2种方法 一个是 爸+号去掉,直接赋值 case 1:sum=day;break;  下面的公式都这样改, 另一种方法是  把sum 先在前面赋值0,。

    第二个问题就是你自己说的  sum++ 错了, 也是2个选择 一个是吧这个公式放到这一行的前面,然后直接printf  sum;    第二种方法  把sum++  换成 ++sum。 也可以解决问题。

  • 小小疾飞
    2019-08-14 14:27:24

    程序写得很冗余

    #include <stdio.h>

    int main() 

        int year = 2008;

        int month = 8;

        int day = 8;

        int sum,flag;

        switch(month)

        {

            case 1:sum=day;break;

            case 2:sum=31+day;break;

            case 3:sum=59+day;break;

            case 4:sum=90+day;break;

            case 5:sum=120+day;break;

            case 6:sum=151+day;break;

            case 7:sum=181+day;break;

            case 8:sum=212+day;break;

            case 9:sum=243+day;break;

            case 10:sum=273+day;break;

            case 11:sum=304+day;break;

            case 12:sum=334+day;break;

            default:printf("Get away,bitch!");break;

        }

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

            flag=1;

        else    

            flag=0;

        

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

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

        else

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

     return 0;

    }