请各位大佬帮忙看一下问题在哪

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

宝慕林7245676

2019-07-19 10:06

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month =8;

    int day = 8;

    int sum=0;

for(int i=1,i<=month,i++)

{

  if(i==1||3||5||7||8||10||12)

  {

      sum+=31;

  }

  else if(i==4||6||9||11)

{

      sum+=30;

}

 else

 {

    sum+=28; 

}

}

if(year%4==0)

{

    sum=sum+1;    

}

else

{

    sum+=0;

}



printf("这一天是该年的第%d天",sum);



return 0;



}


写回答 关注

30回答

  • 小小疾飞
    2019-07-19 10:09:03
    已采纳

    别的先不说。

    if(i==1||3||5||7||8||10||12)和else if(i==4||6||9||11)这种写法是没有的。


  • 小小疾飞
    2019-07-19 11:43:29

    #include <math.h>

    #include <stdio.h>

    int main() 

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

        int year = 2008,month =8,day = 8,sum=0;

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

    {

    switch(i)

    {

    case 1:

    case 3: 

        case 5: 

        case 7: 

    case 8: 

        case 10: 

        case 12:sum+=31;break; 

        case 4: 

        case 6: 

        case 9: 

        case 11:sum+=30;break; 

        case 2:if((year%4==0&&year!=100)||year%400==0)

       sum+=29;

       else  

       sum+=28;break;

    }

    }

    sum+=day;

    printf("这一天是该年的第%d天",sum);

    system("pause");

    return 0;

    }


    小小疾飞 回复宝慕林724...

    有什么问题都可以在这个问答评论里发出来 我都能解决。

    2019-07-19 12:30:11

    共 4 条回复 >

  • 宝慕林7245676
    2019-07-19 11:40:06

    在打中文时忘记切换了。

  • 宝慕林7245676
    2019-07-19 11:38:39

    嗯嗯。

  • 宝慕林7245676
    2019-07-19 11:37:23

    啊啊啊啊,for循环的表达式之间要用分号,愣是没看出来

    宝慕林724... 回复宝慕林724...

    非常感谢指出错误!

    2019-07-19 11:41:18

    共 3 条回复 >

  • 小小疾飞
    2019-07-19 11:35:55

    不提倡这样写,整个结构非常乱。极其影响思路,下面给你看看switch case的。

  • 小小疾飞
    2019-07-19 11:34:26

    #include <math.h>

    #include <stdio.h>

    int main() 

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

        int year = 2008;

        int month = 3;

        int day = 1;

        int sum =0;

        int i;

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

    {

        if(i==month)

    {

        sum+=day;

    }    

       else if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)    

    {

        sum+=31;

    }    

       else if(i==2)

    {

        if((year%4==0&&year%100!=0)||(year%400==0))

    sum+=29;

    else

    sum+=28; 

    }    

        else 

    {

        sum+=30;

       }

    }

    printf("这一天是该年的第%d天",sum);

    return 0;

    }

  • 宝慕林7245676
    2019-07-19 11:27:25

    可以告诉我对的写法和原因吗,我真的不太懂了?

  • 宝慕林7245676
    2019-07-19 11:25:21

    我现在只看出了这一个

  • 宝慕林7245676
    2019-07-19 11:20:43

    我的printf没打分号?

    小小疾飞

    喔?只是这样而已吗?

    2019-07-19 11:21:49

    共 1 条回复 >

  • 小小疾飞
    2019-07-19 11:18:45

    这么多判断if else真的不好 你先看能不能改对。

  • 小小疾飞
    2019-07-19 11:17:48

    for(i=1,i<=month;i++)这里还是没改。printf("这一天是该年的第%d天",sum)这里也错了。把这两个地方改了,输出是对的。但是程序依然是错的。else if(year%4==0&&year%100!=0&&i==2)

    {

        sum+=29;

    }    

        else if(year%4!=0&&i==2)

    {

        sum+=28;        

    }

        else 

    {

        sum+=30;

    }

    这一截有问题。你改成2000.3.1试试就知道为什么了。

  • 小小疾飞
    2019-07-19 11:16:33

    for(i=1,i<=month;i++)这里还是没改。printf("这一天是该年的第%d天",sum)这里也错了。把这两个地方改了,输出是对的。但是程序依然是错的。

    else if(year%4==0&&year%100!=0&&i==2)

    {

        sum+=29;

    }    

        else if(year%4!=0&&i==2)

    {

        sum+=28;        

    }

        else 

    {

        sum+=30;

    }

    这一截有问题。你改成2000.3.1试试就知道为什么了。

  • 宝慕林7245676
    2019-07-19 11:11:15

    求指点指点错在那

  • 小小疾飞
    2019-07-19 11:09:37

    for(i=1,i<=month;i++)这里没改。printf("这一天是该年的第%d天",sum)这里有问题。这两个地方改了后,程序可以成功运行答案也对。但是

     else if(year%4==0&&year%100!=0&&i==2)

    {

        sum+=29;

    }    

        else if(year%4!=0&&i==2)

    {

        sum+=28;        

    }

    这里写错了。这个也不是闰年的表示方法。

  • 宝慕林7245676
    2019-07-19 10:57:11

    哈哈,原谅我只是一个准大一的菜鸟。?

  • 小小疾飞
    2019-07-19 10:56:35

    我的天哪,宝贝,让我来看看。

  • 宝慕林7245676
    2019-07-19 10:54:58

    #include <stdio.h>

    int main() 

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

        int year = 2008;

        int month = 8;

        int day = 8;

        int sum =0;

        int i ;

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

    {

        if(i==month)

    {

        sum+=day;

    }    

        else if (i==1||i==3||i==5||i==7||i==8||i==10||i==12)    

    {

        sum+=31;

    }    

        else if(year%4==0&&year%100!=0&&i==2)

    {

        sum+=29;

    }    

        else if(year%4!=0&&i==2)

    {

        sum+=28;        

    }

        else 

    {

        sum+=30;

    }

    }

        printf("这一天是该年的第%d天",sum)

    return 0;

    }




    这一段代码运行还是错误?

  • 小小疾飞
    2019-07-19 10:48:07

    还没调试好吗?

  • 宝慕林7245676
    2019-07-19 10:30:44

    好的。


  • 小小疾飞
    2019-07-19 10:29:19

    你写完后调试好后把正确的程序给我看下,我给你看我写的。

  • 宝慕林7245676
    2019-07-19 10:28:40

    是不是能整除4但不能整除100?

  • 小小疾飞
    2019-07-19 10:27:33

    if(year%4==0)

    {

        sum=sum+1;    

    }

    这个也是错的。你是想考虑闰年吧。闰年不是这样表示的。

  • 小小疾飞
    2019-07-19 10:26:14

    switch case 简单些

  • 宝慕林7245676
    2019-07-19 10:26:13

    emmm,没看出来,原谅我太水?

  • 宝慕林7245676
    2019-07-19 10:20:01

    我想试试其他的写法,switch case 略麻烦一点

  • 小小疾飞
    2019-07-19 10:19:54

    还有问题,你仔细看下这句。for(int i=1,i<=month,i++)

  • 小小疾飞
    2019-07-19 10:18:41

    你没用switch case呀

  • 宝慕林7245676
    2019-07-19 10:17:24

    请问代码还有什么问题吗?

  • 宝慕林7245676
    2019-07-19 10:16:16

    是不是要这么写

    if(i==1||i==3)

C语言入门

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

926207 学习 · 20797 问题

查看课程

相似问题