在我的编程作业简介中,我遇到了问题。我必须创建一个运输计算器,根据它的重量和发送包裹的程度来运送您的包裹。他们只能运送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;
}
答案 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;
}