问答详情
源自:4-17 switch与if语句的应用

难受,看不懂编译器说哪里错了。请大佬指点

#include <stdio.h>

int main() 

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

    int year = 2008;

    int month = 8;

    int day = 8;

    int sum,m;

    /*

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

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

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

     */

    

   switch(month)

        {

            case 1:sum=0;break;

            case 2:sum=31;break;

            case 3:sum=60;break;

             case 4:sum=91;break;

            case 5:sum=121;break;

            case 6:sum=152;break;

            case 7:sum=182;break;

            case 8:sum=213;break;

            case 9:sum=244;break;

            case 10:sum=274;break;

            case 11:sum=305;break;

            case 12:sum=335;break;

            default:printf(" ");break;

        }

  

    m=day+sum;

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

    m=m;

    else if(month>=2)

    m-=1;

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

    return 0;

}

    以下是编译器内容

运行失败

hello.c: In function 'main':

hello.c:37:46: error: expected ')' before 'year'

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

                                              ^~~~

hello.c:37:14: warning: format '%d' expects a matching 'int' argument [-Wformat=]

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

              ^

hello.c:37:19: warning: format '%d' expects a matching 'int' argument [-Wformat=]

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

                   ^

hello.c:37:24: warning: format '%d' expects a matching 'int' argument [-Wformat=]

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

                        ^

hello.c:37:41: warning: format '%d' expects a matching 'int' argument [-Wformat=]

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

        




提问者:慕圣3392094 2018-11-09 10:04

个回答

  • 小小的植物
    2018-11-09 21:11:18
    已采纳

    #include <stdio.h>

    int main() 

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

        int year = 2008;

        int month = 8;

        int day = 8;

        int sum,m;

        /*

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

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

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

         */

        

       switch(month)

            {

                case 1:sum=0;

    break;

                case 2:sum=31;

    break;

                case 3:sum=60;

    break;

                case 4:sum=91;

    break;

                case 5:sum=121;

    break;

                case 6:sum=152;

    break;

                case 7:sum=182;

    break;

                case 8:sum=213;

    break;

                case 9:sum=244;

    break;

                case 10:sum=274;

    break;

                case 11:sum=305;

    break;

                case 12:sum=335;

    break;

                default:printf(" ");

    break;

            }

               m=day+sum;

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

               m=m;

               else if(month>=2)

               m-=1;

               printf("2008年8月8日是该年的%d天",m);

               return 0;

    }


  • 慕UI2322730
    2018-11-09 11:02:28

    m=day+sum??