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

请问下我这个哪里错了啊

#include<stdio.h>


int main()

{

    int year=2008;

    int month=8;

    int date=8;

    int d=0,m;

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

    {

        d+=31;

        switch(m)

        {

            case 2:

                if(year%4==0)

                {

                    d-=2;

                }

                else

                {

                    d-=3;

                }

                break;

            case 4:

                d-=1;

                break;

            case 6:

                d-=1;

                break;

            case 9:

                d-=1;

                break;

            case 11:

                d-=1;

                break;

        }

    }

    d+=date;

    printf("%d",d);

    return 0;

}

输出之后现实的是这个

http://img4.mukewang.com/5d71bfa100019ea204640105.jpg

提问者:没有度量衡 2019-09-06 10:09

个回答

  • Fatmear
    2019-09-08 18:23:11
    已采纳

    你这个程序题目要求是用if和switch函数,而你咋用了for呢?从你后面的代码感觉你对switch函数还不是很熟吧?搞清switch函数的本质就好了,如果真的不懂欢迎再问。

  • Fatmear
    2019-09-08 18:19:31

    感觉你想得有点复杂了,我也没咋看懂你的程序,也许是我太蠢了吧!但是讲真你可以重新理一下思绪,换个思路可能程序可读性更高,对于一个程序猿来说保证程序可读性可是很重要的哦。不知道我的回答对你会不会有帮助  ?

    这是我的程序:

        int year = 2008;
        int month = 8;
        int day = 8;


       if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
       day += 29;
       else
       day += 28;

     switch (month)
     {  
      case 8:
      day += 31+31+30+31+30+31;
     }

     printf("2008年8月8日是该年的第%d天", day);

    return 0;


  • 没有度量衡
    2019-09-06 10:21:50

    呃,刷新之后就显示212了……可答案是221……这个它具体是怎么执行的啊