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

来源:4-17 switch与if语句的应用

qq_神秘大叔_0

2019-08-24 16:35

#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回答

  • 慕的地21332321
    2019-08-25 13:46:45
    已采纳

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

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

    明白请采纳?

    qq_神秘大...

    好吧 谢谢您,我再研究研究

    2019-08-25 13:49:02

    共 1 条回复 >

  • 1750421753
    2019-08-26 16:35:32

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

  • 慕的地21332321
    2019-08-25 13:47:59
    (days在第13行被声明)

    qq_神秘大...

    i=(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)。我觉得没必要ifelse,我直接i赋值这个判断,真1假0就够了。至于days的赋值问题确实是我疏忽了。

    2019-08-25 13:52:20

    共 1 条回复 >

  • 小小疾飞
    2019-08-24 17:16:19

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

    小小疾飞 回复qq_神秘大...

    可能你的编译器允许这样,声明会赋默认值0,但这样是不对的。其他编译器几乎都会出问题。

    2019-08-25 18:44:38

    共 2 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926021 学习 · 20793 问题

查看课程

相似问题