为C编写家庭作业的简介

时间:2014-07-02 22:09:24

标签: c

在我的编程作业简介中,我遇到了问题。我必须创建一个运输计算器,根据它的重量和发送包裹的程度来运送您的包裹。他们只能运送10磅重的包裹。

费用基于每运送500英里。它们不是按比例分配的,即600英里与900英里的费用相同,即600英里被计为500英里的2个部分。

以下是他们给我的表格:

每运送500英里的包裹重量率 2磅或更少$ 1.50 超过2但不超过6 3.70美元 超过6但不超过10 $ 5.25

问题是每次我进入:

重量:1.0 英里:2000

当它被认为是6.00美元时,我得到58.50美元。这是我的代码如下。顺便说一句,我不能使用循环。

#include <stdio.h>

int main(void){

    float weight, shippingCharge;
    int miles, mTotal, mModule, fTotal;

    printf("Weight: ");
    scanf("%f", &weight);

    printf("Miles: ");
    scanf("%d", &miles);


        mTotal = miles / 500;
        mModule = miles % 500;

    if(mModule > 0){
        fTotal = mTotal + 1;
    }

    if( weight <= 2){
        shippingCharge = fTotal * 1.50;
        printf("Your shipping charge is $%.2f\n", shippingCharge);
    }else{
        if(weight >= 2 && weight <= 6){
            shippingCharge = fTotal * 3.70;
            printf("Your shipping charge is $%.2f\n", shippingCharge);
        }else{
            if(weight >= 6 && weight <= 10){
                shippingCharge = fTotal * 5.25;
                printf("Your shipping charge is $%.2f\n", shippingCharge);
            }else{
                printf("Sorry, we only ship packages of 10 pounds or less.");
            }
        }
    }



    return 0;
}

1 个答案:

答案 0 :(得分:5)

如果距离是500的完全倍数,则不会初始化fTotal - 在这种情况下,您需要将其设置为mTotal

所以改变:

if(mModule > 0){
    fTotal = mTotal + 1;
}

对此(例如):

fTotal = mTotal + (mModule > 0) ? 1 : 0;

不使用三元运算符的方法:

if(mModule > 0) {
    fTotal = mTotal + 1;
} else {
    fTotal = mTotal; 
}