问答详情
源自:4-17 switch与if语句的应用

请问这段代码都有些哪些错误

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



提问者:weixin_慕仔6176033 2020-05-19 22:15

个回答

  • 慕UI8099790
    2020-05-20 16:52:17

    存在的问题一:sum没有初始化。

    问题二:switch用法思路不对;

    你的写法天数和只会加前一个月,想要达到题目要求的话,月份应该从大到小写:

     switch (month)

     {

    case 8: sum += 31;

    case 7: sum += 30;

    case 6: sum += 31;

    case 5: sum += 30;

    case 4: sum += 31;

    case 3: sum += 28;

    case 2:sum += 31;

    case 1:sum += day;

     }