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

​谁能帮我看看哪里错了

​谁能帮我看看哪里错了

C C++
qq_踩了口香糖_04206687 2016-11-15 09:23:45
#include <stdio.h>int main() {     int year = 2008;    int month =1;    int day = 8;    int date;    switch(month)    {    case 1:date+=0;    case 2:date+=31;    case 3:date+=28;    case 4:date+=31;    case 5:date+=30;    case 6:date+=31;    case 7:date+=30;    case 8:date+=31;    case 9:date+=31;    case 10:date+=30;    case 11:date+=31;    case 12:date+=day; break;    } if(year%400==0||(year%4==0&&year%100!=00)) date=date+1+day;    else date=date+day;    printf("%d年是%d月%d日是该年的第%d天 ",year,month,day,date); return 0;}我输出的时候那个日期总是错误显示-837847982478一类的
查看完整描述

5 回答

?
聊发少年狂

TA贡献9条经验 获得超9个赞

switch(month){
    case   1:date =   0;break;
    case  2:date =  31;break;
    case  3:date =  59;break;
    case  4:date =  90;break;
    case  5:date = 120;break;
    case  6:date = 151;break;
    case  7:date = 181;break;
    case  8:date = 212;break;
    case  9:date = 243;break;
    case 10:date = 273;break;
    case 11:date = 304;break;
    case 12:date = 334;break;
    default:break;

你date没有赋初始值,另外switch语句是分支选择执行而不是顺序执行的,所以你这样定义switch语句分支语句最后结果肯定是只有12月是对的。还有分支语句要用break跳出。

查看完整回答
3 反对 回复 2016-11-15
?
望远

TA贡献1017条经验 获得超1032个赞

#include <stdio.h>
int main() 
{ 

    int year = 2008;
    int month =1;
    int day = 8;
    int date;
    switch(month)
    {
    //switch语句执行步骤-》匹配参数month,一旦发现匹配成功,则执行该case块的代码,执行到break语句跳出switch语句
    case 1:date+=0;break;//所以如果month==1,执行case 1 ,如果后面没有break;直接往下执行,不管是否匹配,一直到执行了break或者全部执行完毕
    case 2:date+=31;break;
    case 3:date+=28;break;
    case 4:date+=31;break;
    case 5:date+=30;break;
    case 6:date+=31;break;
    case 7:date+=30;break;
    case 8:date+=31;break;
    case 9:date+=31;break;
    case 10:date+=30;break;
    case 11:date+=31;break;
    default:date+=day;//这里反而是可以不用break的,当然加上也可以,最好是default
    }
if(year%400==0||(year%4==0&&year%100!=00))
date=date+1+day;
    else
date=date+day;
    printf("%d年是%d月%d日是该年的第%d天 ",year,month,day,date);
return 0;
}


查看完整回答
3 反对 回复 2016-11-15
已采纳
?
一叶追寻

TA贡献38条经验 获得超23个赞


//img1.sycdn.imooc.com//582a6dc200017a2e02950057.jpg我用你的代码运行出来是这样子的,你的switch语句里面只有case 12 后面才有break;这就会导致case 1到case 12 之间的语句都会执行,程序还需要设计一下

查看完整回答
反对 回复 2016-11-15
?
慕容5123895

TA贡献4条经验 获得超1个赞

date没有初始化,要用switch的话,每个case后面都要加上break;然后在switch外面套一层循环,保证你输入的月份之前的月都被加上。

查看完整回答
1 反对 回复 2016-11-21
  • 5 回答
  • 0 关注
  • 1675 浏览

添加回答

举报

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