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

请问下我这个哪里错了啊

#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://img1.sycdn.imooc.com//5d71bfa100019ea204640105.jpg

正在回答

4 回答

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

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

没有度量衡 提问者

用了switch和fi了。 如果只用这两个的话会极大的增加工作量…… 如果想要实现同样的功能的话。 当然如果仅仅判断那一天就不用这么麻烦咯…… 但是我想写一个判断所有情况天数的。
2019-09-26 回复 有任何疑惑可以回复我~
#2

没有度量衡 提问者

当然没有加判断输入是否在正常范围内(应该说这里没法加输入所以就懒了)要想加的话再加个if就好了
2019-09-26 回复 有任何疑惑可以回复我~

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

这是我的程序:

    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;


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

没有度量衡 提问者

我写的是想实现无论是几年几月几日都可以算出来的…… 可读性还蛮高的吧,用for循环每个月加31天,switch结构判断每个月不同的情况调整天数,最后再加上本月已经过了的的天数。 还有我这个是没问题的…… 只是我看错了而已……
2019-09-26 回复 有任何疑惑可以回复我~

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

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

没有度量衡 提问者

啊看错了……就是221……没错
2019-09-06 回复 有任何疑惑可以回复我~
#2

没有度量衡 提问者 回复 没有度量衡 提问者

刚才为啥会出现那种结果啊……
2019-09-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问下我这个哪里错了啊

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