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

没出现运行结果,请大神帮我看看原因,谢谢

#include <stdio.h>

int main() 

    /* 定义需要计算的日期 */

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

     * 请使用switch语句,if...else语句完成本题

     * 如有想看小编思路的,可以点击左侧任务中的“不会了怎么办”

     * 小编还是希望大家独立完成哦~

     */

    int i;

    int number=0;

    for(i=1;i<month;i++)

    {

        if(i%2!=0)

        number+=31;

        else

        {

          if(i=2)

          {

        

           switch((year%4==0)&&(year%100!=0))

             {

              case 1:number+=29;break;

              case 0:number+=28;break;

             }

          }

          else

          number+=30;

        }

        

    }

    number+=day;

    printf("%d年%d月%d日是第%d天",year,month,day,number);


return 0;

}



提问者:慕UI7602567 2016-05-27 00:07

个回答

  • _旋律
    2016-05-27 09:37:06
    已采纳

    if(i==2) //‘=’是赋值‘==’才是判断

    //第二个else应该删掉,第一个else意思是指if(i%2==0),只需要在执行语句中指出特殊的i==2即可

    switch(year%4==0&&year%100!=0||year%400==0) //判断语句不全,**00的年份以400年为一个周期,不算的话会少一天

    //事实上7、8月都是31天,如果简单的按奇偶月来算的话,应该会比正常的天数少一天,改进的方法为‘++’

  • 冰_冰_
    2016-05-27 08:30:28

    少判断一个year%400