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

大神在哪里

我套用了for语句为什么,什么都没输出来呢?

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

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

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

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

     */

    int sum,m,i;

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

    {   

        if(m<8)

        {

            switch(m=m%2)

            {

               case 1:i=31;

               break;

               case 0:

               if(m=2)

                {

                   i=28;

                }

               else

                {

                   i=30;

                }

               break;

            }

        }

        if(8<=m<=12)

        {

            switch(m%=2)

            {

                case 1:i=30;

                case 0:i=31;

            }

        }

        else

        {

            printf("一年只有12个月");

        }

        sum=sum+i;

    }

    if(year%4=0)

    {

        sum++;

    }

    printf("%d",sum);

    return 0;


正在回答

3 回答

if(8<=m<=12)你确定可以这样而不是8<=m && m<=12

 case 1:i=30;

  case 0:i=31;  这里的break去哪里了?

  if(m=2) 、 if(year%4=0)     判断相等要用  ==     这是我目测发现的问题,没有仔细看代码

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

君家不见 提问者

谔谔我是新手不要见怪,虽然程序还是有错。
2015-06-20 回复 有任何疑惑可以回复我~

如果只修正其他问题,不修正闰年问题,代码如下:

#include <stdio.h>
int main() 
{ 
    int year=2008,month=8,day=8,sum=0,m,i=0,j=m%2;
    for(m=1;m<=month;m++)
    {
        if(m<8)
        {
            switch(j)
            {
               case 1:i=31;break;
               case 0:
               if(m=2)
                {
                   i=28;
                }
               else
                {
                   i=30;
                }
               break;
            }
        }
        if(m>=8 && m<=12)
        {
            switch(j)
            {
                case 1:i=30;break;
                case 0:i=31;break;
            }
        }
        else
        {
            printf("一年只有12个月\n");
        }
        sum=sum+i;
    }
    if(year%4==0)
    {
        sum++;
    }
    printf("%d",sum);
    return 0;
}

有结果,是:

一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
一年只有12个月
248


依然不知道问题在哪儿!

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

除了楼上指出的问题,还有以下问题:

1、case0后的if(m=2)不正确。因为前面已经使用了switch(m=m%2),m有了新的值,非0即1,不会再等于2了。这也是switch后面可以使用case0、case1的基础。

如果想使用if(m=2),就必须在前面重新定义一个变量,来接收m%2的值。

比如,int j=m%2;

这样就可以用switch(j)来代替switch(m=m%2)

2、sum没有初始值,可能影响结果。(这一点我也不是很确定)

3、闰年的判定方法不正确。

闰年的要求是“四年一闰,百年不闰,四百年再闰”。

判断方法是:year%4==0&&year%100!=0||year%400==0

4、把以上问题修正后,代码依然无法执行,不知道问题在哪儿!!!

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926210    人
  • 解答问题       20797    个

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

进入课程

大神在哪里

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