​谁能帮我看看哪里错了

#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一类的

qq_踩了口香糖_04206687
浏览 1677回答 5
5回答

聊发少年狂

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跳出。

望远

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

一叶追寻

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

慕容5123895

date没有初始化,要用switch的话,每个case后面都要加上break;然后在switch外面套一层循环,保证你输入的月份之前的月都被加上。
打开App,查看更多内容
随时随地看视频慕课网APP