为什么这个代码不能提交?

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

煌璃瞻

2019-09-02 22:36

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum = 0;

    /*

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

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

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

     */

    do

    {

        switch(month)

        {

            case 1:

            case 3:

            case 5:

            case 7:

            case 8:

            sum+=31;

            break;

            case 2:

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

        {

            sum+=29;

        }

        else

        {

            sum+=28;

        }

        break;

        default:

        sum+=30;

        break;

        }

    }while(month>=2);

    printf("%d",sum);

return 0;

}


写回答 关注

3回答

  • iTassel
    2019-09-03 12:41:40
    已采纳

    你swtich里面是month = 8,对应 执行case8里面的代码


    所以对于你case2 里面的判定 拿到外面来 对sum进行运算


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


      default:
       printf("只有十二个月");
       break;
      }
     } while (month <= 2);
     if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
     {
      sum += 29;
      printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
     }
     else
     {
      sum += 28;
      printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
     }

     return 0;
    }


    iTasse...

    以及你的do while循环语句是遇假则跳出循环 你写>=2 则会一直循环下去 然后就是 如果要判定2月以下 整个写个判定

    2019-09-03 12:43:02

    共 1 条回复 >

  • qq_慕UI1492254
    2019-09-03 17:54:54

    高手就是高手

  • iTassel
    2019-09-03 12:48:10

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


       default:
        printf("只有十二个月");
        break;
       }
      } while (month <= 2);
      if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
      {
       sum += 29;
       printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
      }
      else
      {
       sum += 28;
       printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
      }
     }
     else
     {
      if (month = 1)
      {
       sum = day;
       printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
      }
      else
      {
       sum = 31 + day;
       printf("%d年%d月%d日是该年的第%d天", year, month, day, sum);
      }
     }
     return 0;
    }

    这样写 比较复杂 但是应该可以 我也C萌新

    煌璃瞻 回复iTasse...

    你这可以??

    2019-09-03 14:12:22

    共 2 条回复 >

C语言入门

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

926020 学习 · 20793 问题

查看课程

相似问题