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

不明白哪里不对,求解

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    /*

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

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

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

     */

    int sum,i;

    sum=0;

    for (i=0;i<=8;i++)

    {

        switch(i)

        {

            case 1:i+=31;

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

                    {

                       i+=29; 

                    }

                    else

                    {

                        i+=28;

                    }

            case 3:i+=31;

            case 4:i+=30;

            case 5:i+=31;

            case 6:i+=30;

            case 7:i+=31;

            case 8:i+=31;

            break;

        

        }

        sum=sum+i;

        sum+=8;

        printf ("%d年%d月%d日是该年的第%d天",year,month,day,sum);

    }

return 0;

}


正在回答

2 回答

孩纸  你太调皮了  要加break  还有 你的 i+=····各个变量有实际意义的不要乱用  要养成好习惯

这是正确的代码  看看思路吧

#include <stdio.h>

int main()

{

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

    int year = 2008;

    int month = 8;

    int day = 8;


    int sum, i;

    sum=0;//sum代表总天数


    for (i=0;i<month;i++)//每个月的天数加起来 i代表第i个月

    {

        switch(i)

        {

            case 1:sum+=31;break;

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

                    {

                       sum+=29;

                    }

                    else

                    {

                        sum+=28;

                    }break;

            case 3:sum+=31;break;

            case 4:sum+=30;break;

            case 5:sum+=31;break;

            case 6:sum+=30;break;

            case 7:sum+=31;break;

            case 8:sum+=31;break;

            case 9:sum+=30;break;

            case 10:sum+=31;break;

            case 11:sum+=30;break;

            case 12:sum+=31;break;

            default:                ;

        }

    }

    sum+=day;

    printf ("%d年%d月%d日是该年的第%d天",year,month,day,sum);

    return 0;

}

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

夜半饮酒 提问者

只有八月,为什么case 里面要写到12月???那个break不是用来跳出循环的吗。。。我想就到八月过,所以只有那里放了break。。。。是不是跳出一个循环然后开始下一个??额。。。。。还有一个问题,for循环里,为什么i要小于month????谢谢你,大好人
2016-12-27 回复 有任何疑惑可以回复我~

恩恩   那个本人有喜欢完整   就把月份都写出来了

那个12月份可以不写  不影响的

对break可以跳出循环  也可以跳出switch语句

for里面包含或者说嵌套了一个switch语句,里面的break可以跳出

本题用i代表月份  i<month=8  即i可以等于1,2,3····7,这几个月的天数加起来   再单独加第8月的天数



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

夜半饮酒 提问者

谢谢,我现在明白了
2016-12-30 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

不明白哪里不对,求解

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