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

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

#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 回答

有两点:

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

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

如果运算量中有一个是实型(实型变量分为单精度(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;
}


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

慕粉4367945 提问者

非常感谢!自动转换是在什么情况下进行的?
2016-12-17 回复 有任何疑惑可以回复我~

回复 慕粉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;    
}


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

#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;

}


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

慕粉4367945 提问者

8.7自动取整数,要四舍五入吗?
2016-12-16 回复 有任何疑惑可以回复我~
#2

慕仔6107095 回复 慕粉4367945 提问者

这个不是四舍五入,是直接保留整数部分,例如5.4=5 5.6=5
2016-12-17 回复 有任何疑惑可以回复我~

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

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

举报

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

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

进入课程

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

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