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

求问这错在哪里,谢谢!

求问这错在哪里,谢谢!

C
qq_丿殇丶Abgrund_03928552 2016-10-03 19:51:40
#include <stdio.h>int main() {     int year = 2008;    int month = 8;    int day = 8;    int sum,num;    switch(month)    {        case 1;sum=0;break;        case 2;sun=0+28;break;        case 3;sum=0+28+31;break;        case 4;sum=0+28+31+30;break;        case 5;sum=0+28+31+30+31;break;        case 6;sum=0+28+31+30+31+30;break;        case 7;sum=0+28+31+30+31+30+31;break;        case 8;sum=0+28+31+30+31+30+31+31;break;        case 9;sum=0+28+31+30+31+30+31+31+30;break;        case 10;sum=0+28+31+30+31+30+31+31+30+31;break;        case 11;sum=0+28+31+30+31+30+31+31+30+31+30;break;        case 12;sum=0+28+31+30+31+30+31+31+30+31+30+31;break;        default:printf("还有12个以上的月份?");    }    sun=sun+day;    if(year%4=0)    {        num=1;    }    else    {        num=0;    }    if(num==1)    {            sum+1;        printf("2008年8月8日是该年中第%d\n",sum);    }    return 0;}
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

语法上和逻辑上都有错误。


先说逻辑上的:

switch语句中,每个case后的是该月前面所有月份的天数总和。

所以 case 1 时,sum是一月份前所有日子的和,一月份之前可视为没有天数,所以sum是0。这没问题。

可是 case 2 时,sum应该是前一月的天数,也就是一月份的天数,那为什么你写28?

所以 case 2 及之后case中的天数都错了。


还有,有的地方手滑把 sum打成 sun 了。

后面 if 语句判断是否为闰年的条件也写错了。 闰年的条件是“四年一闰,百年不闰,四百年再闰”,并不是简单的被4整除就算闰年。

查看完整回答
2 反对 回复 2016-10-03
?
慕后端9788028

TA贡献3条经验 获得超0个赞

笨,自己板着手指数一数

查看完整回答
反对 回复 2016-10-03
  • 2 回答
  • 1 关注
  • 1376 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信