switch case的一课4-16这样写错在哪里,

来源:4-16 分支结构之switch语句

慕粉4367945

2016-12-15 21:12

#include <stdio.h>

int main() 

{

    int score = 87; //考试分数为87分 

     

    switch(score)

    {

        /*想想以下代码为什么用这种方式;

          这种方式的好处?*/

        case 100:

        case 90:

            printf("等级A");

            break;

        case 90:    

        case 80:

            printf("等级B");

                break;            //这里是不是缺点什么?            

        case 70:

        case 60: 

            printf("等级C");

                   break;         //这里是不是缺点什么?  

        default:

            printf("等级D");

            break;    

    }

    return 0;

}


写回答 关注

4回答

  • 学之舟_36820
    2016-12-17 04:05:07
    已采纳

    有两点:

    第一点是:除法运算符“/”是双目运算符,具有左结合性。

    如果参与运算量均为整型时,结果也为整型,舍去小数。

    如果运算量中有一个是实型(实型变量分为单精度(float),双精度(double)和长双精度(long double)型),则结果为双精度实型。

    第二点是:自动转换。

    发生在不同数据类型运算时,在编译的时候自动完成。

    注意:字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换

    #include <stdio.h>
    int main() 
    {
        int score = 87; //考试分数为87分 
        int a = 10;
        float b = 10.0;
        double c = 10.000000;
        
        printf("%d\n",score / a);
        printf("%f\n",score / b);
        printf("%f\n",score / c);
    	
        printf("%d\n",score / b); // 错误结果 
        printf("%d\n",score / c); // 错误结果 
    	    
        return 0;
    }


    慕粉4367...

    非常感谢!自动转换是在什么情况下进行的?

    2016-12-17 17:55:06

    共 1 条回复 >

  • 学之舟_36820
    2016-12-17 18:13:06

    回复 慕粉4367945:本门课程2章8、9节就讲。

    #include <stdio.h>
    int main()
    {
        char c = 'a';
        
        // 自动类型转换
        int n = c; //将c赋值给n
        float f = c; //将c赋值给f
        double d = c; //将c赋值给d
        int x = d; // 数据精度丢失 warning: converting to `int' from `double'
        
        // 强制类型转换
        int y = (int)d;
        
        printf("%d\n",n);
        printf("%f\n",f);
        printf("%lf\n",d);
        printf("%d\n",x);
        printf("%d\n",y);
        
        return 0;    
    }


  • 慕仔6107095
    2016-12-15 23:00:52

    #include <stdio.h>

    int main() 

    {

        int score = 87,a; //考试分数为87分 

        a=score/=10;

        switch(a)

        {

            

            case 10:

            case 9:

                printf("等级A"); break; 

                break;

       

            case 8:

                printf("等级B"); break; 

                                

            case 7:

            case 6: 

                printf("等级C"); break; 

                                

          default:

            printf("等级D");break;

        }

        return 0;

    }


    慕仔6107... 回复慕粉4367...

    这个不是四舍五入,是直接保留整数部分,例如5.4=5 5.6=5

    2016-12-17 20:57:25

    共 2 条回复 >

  • 慕仔6107095
    2016-12-15 22:59:55

    你这里没有对应的case 87:与之对应输出,如果是switch(a),那下面会输出的case就是对应的 case a://注意这里a是整数要用int定义

C语言入门

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

926024 学习 · 20793 问题

查看课程

相似问题