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

来源:4-17 switch与if语句的应用

慕勒6144788

2019-07-21 17:52

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

  • 小小疾飞
    2019-07-21 19:48:37
    已采纳

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

  • 慕勒6144788
    2019-07-21 22:16:47

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


  • 慕勒6144788
    2019-07-21 21:34:05

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


    小小疾飞

    还有 我说你算法有问题是还有一种情况是闰年就是被400整除的。

    2019-07-21 21:56:20

    共 2 条回复 >

  • 小小疾飞
    2019-07-21 21:18:35

    改成这样了 你看怎么样

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

    }


  • 慕勒6144788
    2019-07-21 21:00:22

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

    小小疾飞

    你改成2000.3.1试下

    2019-07-21 21:06:19

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926027 学习 · 20793 问题

查看课程

相似问题