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

求各位大神帮我看一下哪里有问题,为什么输出来的是221

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
 
    int sum ;
    switch (month)
    {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:
        printf("%s\n","一年只有12个月");
        break;
    }
    if(year%4==0&&year%100!=0&&month>=2)
    {
        sum+=1 ;
    }
   
    else
    {
         sum ;
    }
   
  sum+=day ;
printf("2008年是该年的第%d天",sum) ;

 return 0;


正在回答

5 回答

首先你算法有问题。其次,答案是对的2008年8月8日是2008年的第221天。

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

╮(╯-╰)╭还是有点弄不懂,有点懵


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

题目要求的是用switch和if-else语句来编写该程序,结果提示我输出错误,我用笔算了一下是223,你写的语句太超前了,我还没学到那里,所以有点理解不了~~


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

小小疾飞

你好 其实我就只是按你的思路来的,把累计月份的天数放数组里罢了。还有2008年8月8日的天数是 31+29+31+30+31+30+31+8=221 是等于221 你可以用计算器算下。
2019-07-21 回复 有任何疑惑可以回复我~
#2

小小疾飞

还有 我说你算法有问题是还有一种情况是闰年就是被400整除的。
2019-07-21 回复 有任何疑惑可以回复我~

改成这样了 你看怎么样

#include <stdio.h>

int main() 

    int year = 2008 ;

    int month = 8 ;

    int day = 8 ;

    int a[]={0,31,59,90,120,151,181,212,243,273,304,334} ;

    int sum ;

if(month>=0&&month<=12)

sum=a[month-1] ;

sum+=day ;

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

    {

        sum+=1 ;

    }  

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

return 0 ;

}


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

可否告知算法哪里出错了?我这个思路没毛病啊

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

小小疾飞

你改成2000.3.1试下
2019-07-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求各位大神帮我看一下哪里有问题,为什么输出来的是221

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