大佬帮忙看看哪里错了

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

克里斯老刘

2022-02-11 11:49

请使用switch语句和if...else语句,计算2008年8月8日这一天,是该年中的第几天。

程序分析:

  以5月1日为例,应该先把前4个月的天数加起来,然后再加上1天即本年的第几天。

特殊情况:

  在计算闰年的时候,2月是29天


#include <stdio.h>

int main() 

    // 定义需要计算的日期 

    int year = 2008;

    int month = 8;

    int day = 8;

    int big month=31;//1,3,5,7,8,10,12月

    int small month=30;//4,6,9,11月

    //天数

    int mun;

    //检测是否为闰年的状态位

    int flag;

  

    switch(month){

        //1月

        case 1:

             mun=big month;

             break;

        case 2:

        //1,2月

             mun=big month+28;

             break;

        case 3:

        //1,2,3

             mun=(big month*2)+28;

             break;

        case 4:

        //1,2,3,4月

             mun=(big month*2)+28+small month;

             break;

        case 5:

        //1,2,3,4,5月

             mun=(big month*3)+28+small month;

             break;

        case 6:

        //1,2,3,4,5,6月

             mun=(big month*3)+28+(small month*2);

             break;

        case 7:

        //1,2,3,4,5,6,7月

             mun=(big month*4)+28+(small month*2);

             break;

        case 8:

        //1,2,3,4,5,6,7,8月

             mun=(big month*5)+28+(small month*2);

             break;

        case 9:

        //1,2,3,4,5,6,7,8,9月

             mun=(big month*5)+28+(small month*3);

             break;

        case 10:

        //1,2,3,4,5,6,7,8,9,10月

             mun=(big month*6)+2month+(small month*3);

             break;

        case 11:

        //1,2,3,4,5,6,7,8,9,10,11月

             mun=(big month*6)+28+(small month*4);

             break;

        case 12:

        //1,2,3,4,5,6,7,8,9,10,11,12月

             mun=(big month*7)+28+(small month*4);

             break;

        default:

             printf("一年当中只有12个月");

             break;

    }

    //计算天数

    mun+=day;

    

    //当改年为闰年时,将状态位设置成1,否则为0

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

         flag=1;

    else

         flag=0;

         

    //即改年为闰年,2月为29天    

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

         mun+=1;

         

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

return 0;

}


写回答 关注

2回答

  • 克里斯老刘
    2022-02-15 09:43:47

    滴滴滴

    丷渐入佳境

    2month什么鬼 还有small month变量能这么命名么 还有case的应该是month-1

    2022-03-11 16:35:39

    共 1 条回复 >

  • 克里斯老刘
    2022-02-11 14:20:23

    在线等,感谢指导

    克里斯老刘 回复克里斯老刘

    滴滴滴

    2022-02-15 09:39:33

    共 2 条回复 >

C语言入门

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

924594 学习 · 20763 问题

查看课程

相似问题