问答详情
源自:4-17 switch与if语句的应用

请问这样写错在哪里???

#include <stdio.h>
int main()
{
    /* 定义需要计算的日期 */
    int year = 2008;
    int month = 8;
    int day = 8;
    /*
     * 请使用switch语句,if...else语句完成本题
     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”
     * 小编还是希望大家独立完成哦~
     */
    int i,j,sum;//j是月份不同天数的三种情况
    for(i=1;i<month;i++)//从1月到month-1月循环
    {
        if(i==2)
        {
            j=2;
        }
        else if(i==4||i==6||i==9||i==11)
        {
            j=3;
        }
        else
        {
            j=1;
        }
        //判断当月属于哪种情况
        switch(j)
        {
        case 1:
            sum+=31;
            break;
        case 2:
            if(!(year%4))
            {
                sum+=29;
            }
            else
            {
                sum+=28;
            }
            break;
        case 3:
            sum+=30;
            break;
        }
        //每月不同情况处理
    }
    sum+=day;  
    printf("2008年的8月8日是该年的第%d天",sum);
 return 0;
}

提问者:bm226 2016-12-28 22:48

个回答

  • 慕粉10031号
    2017-01-12 20:51:45
    已采纳

    sum没有声明初始值,sum=0就不会异常了。

    还有闰年的判断语句是(year%4==0&&year%100!=0)||(year%400==0)

  • qq_言丁_04032055
    2016-12-29 00:55:57

    自己写的代码现在电脑上的编译软件试一下,因为慕课网这个判断太死板了。