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

我就想问一下,网站的编译器为什么不成功?我在linux以及windows下的dev c++都成功了

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


正在回答

4 回答

因为慕课网有不同于Dev-C++的编译机制。

附:days这个变量没有赋值,在Dev-C++中会被系统随机赋值。

明白请采纳?

0 回复 有任何疑惑可以回复我~
#1

qq_神秘大叔_0 提问者

好吧 谢谢您,我再研究研究
2019-08-25 回复 有任何疑惑可以回复我~

为什么你的没有写break也可以呢

0 回复 有任何疑惑可以回复我~
(days在第13行被声明)
0 回复 有任何疑惑可以回复我~
#1

qq_神秘大叔_0 提问者

i=(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)。我觉得没必要ifelse,我直接i赋值这个判断,真1假0就够了。至于days的赋值问题确实是我疏忽了。
2019-08-25 回复 有任何疑惑可以回复我~

先不谈你这个其他的问题,输出的值错误是因为你days没有定义,就是没初始化,只是声明了。

0 回复 有任何疑惑可以回复我~
#1

qq_神秘大叔_0 提问者

先不说你回答的内容,就说我的问题你看明白没,我想知道的是编译器的问题
2019-08-25 回复 有任何疑惑可以回复我~
#2

小小疾飞 回复 qq_神秘大叔_0 提问者

可能你的编译器允许这样,声明会赋默认值0,但这样是不对的。其他编译器几乎都会出问题。
2019-08-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我就想问一下,网站的编译器为什么不成功?我在linux以及windows下的dev c++都成功了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信