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

为什么输出了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;
}

正在回答

2 回答

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

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

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

程序写得很冗余

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

}


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

慕莱坞3467181 提问者

所以我是哪里错了??
2019-08-14 回复 有任何疑惑可以回复我~
#2

小小疾飞 回复 慕莱坞3467181 提问者

你自己对比下程序 错了两个地方 还算明显
2019-08-14 回复 有任何疑惑可以回复我~
#3

慕莱坞3467181 提问者 回复 小小疾飞

噢一个是 += 另一个是sum++?
2019-08-14 回复 有任何疑惑可以回复我~
#4

小小疾飞 回复 慕莱坞3467181 提问者

。嗯。
2019-08-14 回复 有任何疑惑可以回复我~
#5

慕莱坞3467181 提问者 回复 小小疾飞

多谢指导。可是为什么 += 会加到这么大?
2019-08-14 回复 有任何疑惑可以回复我~
#6

小小疾飞 回复 慕莱坞3467181 提问者

因为你sum没给初始值。
2019-08-14 回复 有任何疑惑可以回复我~
#7

慕莱坞3467181 提问者 回复 小小疾飞

所以sum视作32765?然后32765+220.哦
2019-08-14 回复 有任何疑惑可以回复我~
#8

小小疾飞 回复 慕莱坞3467181 提问者

嗯 和内存有关
2019-08-14 回复 有任何疑惑可以回复我~
#9

慕莱坞3467181 提问者 回复 小小疾飞

多谢多谢
2019-08-14 回复 有任何疑惑可以回复我~
查看6条回复

举报

0/150
提交
取消

为什么输出了32985?求解释

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