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

代码无论怎么对比,反反复复的对比,一个个地方的修改,都是错误的,求大神帮查找错误

#include <stdio.h>

 

int main() 

 

 

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

 

    int year=2008;

 

    int month=8;

 

    int day=8;

     

    int sum, flag;

 

    switch(month)

{

    case 1:sum=0;break;

    case 2:sum=31;break;

    case 3:sum=59;break;

    case 4:sum=90;break;

    case 5:sum=120;break;

    case 6:sum=151;break;

    case 7:sum=181;break;

    case 8:sum=212;break;

    case 9:sum=243;break;

    case 10:sum=273;break;

    case 11:sum=304;break;

    case 12:sum=334;break;

    default:printf("错误");break;

    sum=sum+day;

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

        flag=1;

    else

        flag=0;

        

    if(flag==1&&month>2)

        sum++;

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

    return 0;

 

}



提问者:imooc_粉丝 2016-05-27 22:17

个回答

  • youngchou1997
    2016-05-31 17:56:57
    已采纳

    http://img.mukewang.com/574d5fc40001c67708250524.jpgvc++6.0, win10 实测可以,你的报错是啥呢?

  • 祝须臾
    2016-06-06 10:56:12

    #include <stdio.h>

    int main() 

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

        int year = 2008;

        int month = 8;

        int day = 8;

        int sum ,flag;

        /*

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

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

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

         */

         switch(month)

         {

             case 1:sum = 0; break;

             case 2:sum = 31; break;

             case 3:sum = 59; break;

             case 4:sum = 90; break;

             case 5:sum = 120; break;

             case 6:sum = 151; break;

             case 7:sum = 181; break;

             case 8:sum = 212; break;

             case 9:sum = 243; break;

             case 10:sum = 273; break;

             case 11:sum = 304; break;

             case 12:sum = 334; break;

             default: printf("一年当中只有12个月哦~"); break;

         }

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

         {

            flag = 1;

         }

         else

         {

             flag = 0;

         }

         if(flag==1&&month>2)

            sum = sum + day + 1;   //如果是闰年且满足以上条件,那么除了要加1天外还要加上day

            else

            {

                sum = sum + day;//如果不是闰年,那直接加day就行

            }

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

    return 0;

    }

    注意看加粗倾斜这段代码,小编为了让咱们学到更多的东西也是蛮拼的

  • 小雾3378873
    2016-06-03 23:15:05

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

    的确是这句话的毛病,是year前面的那个","是中文标点符号,改成英文半角的就可以了","

  • youngchou1997
    2016-05-30 22:22:01

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

    你这句有问题,多一个163变量。。。

    printf("%d这一年的%d月的%d是这一年当中的第%d天", year, month, day, sum);

    改成这样就好了

  • youngchou1997
    2016-05-30 22:17:43

    回复 IT_阿飞:--------------------Configuration: help - Win32 Debug--------------------

    Compiling...

    help.c

    e:\练习\1\help.c(41) : error C2018: unknown character '0xa3'

    e:\练习\1\help.c(41) : error C2018: unknown character '0xac'

    e:\练习\1\help.c(41) : error C2146: syntax error : missing ')' before identifier 'year'

    e:\练习\1\help.c(41) : error C2059: syntax error : ')'

    执行 cl.exe 时出错.

    help.exe - 1 error(s), 0 warning(s)


  • youngchou1997
    2016-05-27 22:27:20

    #include <stdio.h>
     
    int main() 
     
    { 
     
        /* 定义需要计算的日期 */
     
        int year=2008;
     
        int month=8;
     
        int day=8;
         
        int sum, flag;
     
        switch(month)
    {
        case 1:sum=0;break;
        case 2:sum=31;break;
        case 3:sum=59;break;
        case 4:sum=90;break;
        case 5:sum=120;break;
        case 6:sum=151;break;
        case 7:sum=181;break;
        case 8:sum=212;break;
        case 9:sum=243;break;
        case 10:sum=273;break;
        case 11:sum=304;break;
        case 12:sum=334;break;
        default:printf("错误");break;
    } 
        sum=sum+day;
        if(year%400==0||(year%4==0 && year%100!=0))
            flag=1;
        else
            flag=0;
            
        if(flag==1&&month>2)
            sum++;
           printf("%d这一年的%d月的%d是这一年当中的第%d天", year, month, day, sum);
        return 0;
     
    }


  • youngchou1997
    2016-05-27 22:25:41

    C语言里的变异错误error:stray'\243'in program

    代表编译器在编译源文件时遇到了不可识别的非法字符。其值为ascii码值243。
    这一个值并不在合法的英文字符范围(0~127)范围内,所以一般都是由于误输入造成的。
    出现这类问题时,需要根据提示错误的行数,找到对应行,然后重点查找以下几个方面:
    1 是否存在汉字。
    大多数的C编译器并不识别汉字,所以变量名中不要使用汉字。
    2 是否存在汉语标点。
    这种情况是最常见的。C语言要求所有的符号必须是英文半角符号,当有中文标点符号出现时,就会有此类错误出现,比如逗号应为',' 而不能是','。
    3 是否有全角英文字符。
    在C中,全角字符同样是非法的,比如a写作a。
    对于这一点,需要注意的是全角的空格,由于空格的不可见性,全角空格比较难查,当无法查到有显式的错误符号时,可以尝试删除所有空格,重新编译。