请问下我这个哪里错了啊

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

没有度量衡

2019-09-06 10:09

#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

写回答 关注

3回答

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

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

    没有度量衡

    当然没有加判断输入是否在正常范围内(应该说这里没法加输入所以就懒了)要想加的话再加个if就好了

    2019-09-26 11:36:28

    共 2 条回复 >

  • 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;


    没有度量衡

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

    2019-09-26 11:32:20

    共 1 条回复 >

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

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

    没有度量衡 回复没有度量衡

    刚才为啥会出现那种结果啊……

    2019-09-06 10:43:50

    共 2 条回复 >

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题