基于硬件的C(C++)语言程序设计教程10:运输公司计算运费

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingwufeiyang12346/article/details/83796822

本系列文章希望探讨以硬件为平台讲述C(C++)知识的一个新的途径,改变目前大多数C语言教程仅注重C语言本身的语法规则,而脱离其应用环境的现状。希望读者通过本教程的学习,能够立刻学以致用,真正将所学知识应用到项目实践中。

开发环境:Atmel Studio 7.0

硬件平台:Microchip AVR ATmega168PA

参考教材:C++程序设计(第3版) 谭浩强编著,清华大学出版社

备注:教程仅适合初学者,高手请绕过
 

本文将对教材P68页的例程3.9进行改进,使之能够运行于Atmel Studio。例程3.9的原题如下:

运输公司对用户计算运费,路程(s,单位公里)越远,每公里运费越低,标注如下:

                   s < 250             没有折扣

     250   <= s < 500            2%

     500   <= s < 1000          5%

     1000 <= s < 2000          8%

     2000 <= s < 3000          10%

     3000 <= s                       15%

解题思路:设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f为:

     f = p * w * s * (1 - d)

如果应用switch语句,则必须找到最大公约数,我们从题中的分析可以看出最大公约数为250,这样就可将题目转化为1个单独的整型变量,以用于switch的表达式。

一、源程序(改进后)

/*
 *	项目名称:运输公司计算运费
 *	作者:snmplink
 *	创建时间:2018-11-7
 *	备注:
 */ 

#include <avr/io.h>


int main(void)
{
    int c, s;
    float p, w, d, f;
	
    p = 100;		//p为运费
    w = 20;			//w为重量
    s = 300;		//s为距离	
	
    while (1) 
    {
        if (s >= 3000)
        {
            c = 12;
        }
        else
        {
            c = s / 250;	//整型除以整型还是整型
        }
        switch (c)
        {
        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);
    }
}

二、运行结果

三、流程图

四、注解

1、switch后面括号内的“表达式”,只能是数值类型数据。

2、当switch表达式的值与某一个case子句中的常量表达式的值相匹配时,就执行此case子句中的内嵌语句,若所有的case子句中的常量表达式的值都不能与switch表达式的值匹配,就执行default子句的内嵌语句。

3、每一个case表达式的值必须互不相同。

4、各个case和default的出现次序不影响执行结果。

5、执行完一个case子句后,流程控制转移到下一个case子句继续执行,不再进行判断。

6、如果希望跳出switch结构,可以使用break语句。

任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。

原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/83796822