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

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

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

你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;
}


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

iTassel

以及你的do while循环语句是遇假则跳出循环 你写>=2 则会一直循环下去 然后就是 如果要判定2月以下 整个写个判定
2019-09-03 回复 有任何疑惑可以回复我~

高手就是高手

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

#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萌新

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

iTassel

所以里面 do while就没用了 应该删掉 直接swtich就行
2019-09-03 回复 有任何疑惑可以回复我~
#2

煌璃瞻 提问者 回复 iTassel

你这可以??
2019-09-03 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

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

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