#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跳出。
 
                    
                    
                            望远
                            
                                
                            
                        
                        
                                                
                    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;
}
                        已采纳
                    
                                        
                         
                    
                    
                            一叶追寻
                            
                                
                            
                        
                        
                                                
                    TA贡献38条经验 获得超23个赞
 我用你的代码运行出来是这样子的,你的switch语句里面只有case 12 后面才有break;这就会导致case 1到case 12 之间的语句都会执行,程序还需要设计一下
我用你的代码运行出来是这样子的,你的switch语句里面只有case 12 后面才有break;这就会导致case 1到case 12 之间的语句都会执行,程序还需要设计一下
- 5 回答
- 0 关注
- 1756 浏览
添加回答
举报
0/150
	提交
		取消
	
