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

正序和倒序两种代码哪个好?

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用switch语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int sum;
    switch (month)
    {
    case 1:sum=0+day;break;
    case 2:sum=31+day;break;
    case 3:sum=31+28+day;break;
    case 4:sum=31+28+31+day;break;
    case 5:sum=31+28+31+30+day;break;
    case 6:sum=31+28+31+30+31+day;break;
    case 7:sum=31+28+31+30+31+30+day;break;
    case 8:sum=31+28+31+30+31+30+31+day;break;
    case 9:sum=31+28+31+30+31+30+31+31+day;break;
    case 10:sum=31+28+31+30+31+30+31+31+30+day;break;
    case 11:sum=31+28+31+30+31+30+31+31+30+31+day;break;
    case 12:sum=31+28+31+30+31+30+31+31+30+31+30+day;break;
    }
    if(year%4==0 && month>2)
    sum=sum+1;
    else
    sum=sum;
    printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);
 return 0;
}


#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用switch语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int sum=0;
    switch (month)
    {
    case 12:sum=sum+30;
    case 11:sum=sum+31;
    case 10:sum=sum+30;
    case 9:sum=sum+31;
    case 8:sum=sum+31;
    case 7:sum=sum+30;
    case 6:sum=sum+31;
    case 5:sum=sum+30;
    case 4:sum=sum+31;
    case 3:if(year%4==0)
    sum=sum+29;
    else sum=sum+28;
    case 2:sum=sum+31;
    case 1:sum=sum+day;
    }
    printf("%d年%d月%d日是该年的第%d天",year,month,day,sum);
 return 0;
}



正在回答

1 回答


个人以为第二种比较好,但是闰年是指年数可以整除四的年份,若为整百的年份,需整除四百。而且你的if-else语句少了{ }

#include <stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

     * 请使用switch语句,if...else语句完成本题

     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

     * 小编还是希望大家独立完成哦~

     */

    int i,sum;

    sum=0;

    for(i=1;i<month;i++)

    {

        switch(i)

        {

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            case 10:

            case 12:

                sum += 31;

                break;

            case 2:

                sum += 28;

                break;

            case 4:

            case 6:

            case 9:

            case 11:

                sum += 30;

                break;

        }

    }

    sum += day;

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

    {

        sum +=1;

    }

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

    return 0;

}


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

慕数据7339721 提问者

谢谢指点
2021-01-26 回复 有任何疑惑可以回复我~
#2

慕运维2227135

想请教一下,这个程序里break的作用,为什么加break和不加break的差别这么大
2021-04-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926047    人
  • 解答问题       20793    个

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

进入课程

正序和倒序两种代码哪个好?

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