C语言初步-第26讲:利用switch语句解决问题(成绩等级)

任务和代码:


/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.9.14
*版本号:v2.
*
*问题描述:给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
*问题输出:输出与分数对应的等级
*/
#include <stdio.h>
#include <stdlib.h>


int main ( ){
    int grade,rate;;
    printf("所得成绩:");
    scanf("%d",&grade);
    rate=(grade>60)+(grade>70)+(grade>80)+(grade>90);
    switch(rate){
    case 0:
        printf("输出等级:E");
        break;
    case 1:
        printf("输出等级:D");
        break;
    case 2:
        printf("输出等级:C");
        break;
    case 3:
        printf("输出等级:B");
        break;
    default:
        printf("输出等级:A");
    }
    return 0;
}
运行结果:


知识点总结:

1.if的多分支结构转换成switch语句;2.break及时退出;3.如何将分段区间转换成简单的标准量(将各个区间的部分用逻辑表达式表出后相加)

心得:

if的多分枝结构类似分段函数,这样的话一定能够用switch语句表达出来吧。同讲中“计算运费”能否也这样表示呢?


任务和代码:

/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*文件名称:main.c
*作者: Osseyda
完成日期:2017.9.14
*版本号:v2.
*
*问题描述:每公里每吨货物的基本运费为p(price),货物重为w(weight),距离为s,折扣为d(discount),则总运费f(freight)的计算公式为 freight=price*weight*s*(1-discount)
*问题输出:总运费
*/
#include <stdio.h>
#include <stdlib.h>


int main ( ){
    int c,s;
    float p,w,d,f;
    printf("please enter p,w,s: ");
    scanf("%f%f%d", &p, &w, &s);
    c=(s<250)+(s<500)+(s<1000)+(s<2000)+(s<3000);
    switch (c){
    case 5:
        d=0;break;
    case 4:
        d=2;break;
    case 3:
        d=5;break;
    case 2:
        d=8;break;
    case 1:
        d=10;break;
    default:
        d=15;break;
    }
    f=p*w*s*(1-d/100.0);
    printf("freight=%.2f\n", f);
    return 0;
}

运行结果:

原程序代码:

    #include <stdio.h>  
    int main()  
    {  
        int c,s;  
        float p,w,d,f;  
        printf("please enter p,w,s: ");  
        scanf("%f%f%d", &p, &w, &s);  
        if(s>=3000)  
            c=12;  
        else  
            c=s/250;  
        switch (c)  
        {  
        case 0:  
            d=0;break;  
        case 1:  
            d=2;break;  
        case 2:  
        case 3:  
            d=5;break;  
        case 4:  
        case 5:  
        case 6:  
        case 7:  
            d=8;break;  
        case 8:  
        case 9:  
        case 10:  
        case 11:  
            d=10;break;  
        case 12:  
            d=15;break;  
        }  
        f=p*w*s*(1-d/100.0);  
        printf("freight=%.2f\n", f);  
        return 0;  
    }  
知识点总结:

1.寻找标准量的方法有两种:(逻辑表达式;‘/ ’使满足条件的范围变小)

2.多个case可以共用一组执行语句

心得:

1.在用逻辑表示式找标准量的时候,没仔细看范围,导致下面原本case 4的情况下变成了case 2(取补);

2.程序虽然小,但自己亲手动一遍的话,便知道容易出错的地方在哪,下次哪些地方应尤其注意,避免出错。

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值