为了修建一个有跑道的机场,我们需要填充一块区域,承包商有两辆工程车,一辆车最多可以运8吨,另一辆最多可以运12吨。8吨和12吨的卡车每次的运输成本分别为400元和550元。为保证安全,每辆工程车的载重不能超出其运输量的80%。
写一个程序计算运送给定吨数所需要的最小成本。提示用户输入给定的吨数,输出每辆卡车需要的运输次数和花费以作为建议的方案。使用模块化来设计本程序。
首先,我们可以创建一个函数来计算每辆车需要运输的次数。该函数需要接受一个参数,即给定的吨数,然后根据每辆车的运输能力和安全载重限制,计算出该车需要运输的次数并返回结果。
int calculateTransportTimes(int givenWeight, int maxWeight) {
float safeLoad = maxWeight * 0.8; // 计算安全载重
int transportTimes = givenWeight / safeLoad; // 计算需要运输的次数
// 如果给定的吨数不能整除安全载重,需要额外增加一次运输次数
if (givenWeight % safeLoad != 0) {
transportTimes++;
}
return transportTimes;
}
接下来,我们可以创建另一个函数来计算运输的总成本。该函数也需要一个参数,即给定的吨数。在这个函数中,我们可以根据每辆车的运输次数和成本,计算出完成运输所需的总成本,并返回结果。
int calculateTotalCost(int givenWeight, int transportTimes, int costPerTransport) {
int totalCost = transportTimes * costPerTransport; // 计算总成本
return totalCost;
}
最后,在主函数中获取用户输入的给定吨数,并调用前面两个函数来计算出最小成本和每辆车的运输次数。然后,将计算结果以友好的方式输出给用户。
#include <stdio.h>
int calculateTransportTimes(int givenWeight, int maxWeight);
int calculateTotalCost(int givenWeight, int transportTimes, int costPerTransport);
int main() {
int givenWeight;
printf("请输入给定的吨数:");
scanf("%d", &givenWeight);
int transportTimesTruck1 = calculateTransportTimes(givenWeight, 8);
int transportTimesTruck2 = calculateTransportTimes(givenWeight, 12);
int costTruck1 = calculateTotalCost(givenWeight, transportTimesTruck1, 400);
int costTruck2 = calculateTotalCost(givenWeight, transportTimesTruck2, 550);
printf("卡车1需要运输%d次,费用为%d元\n", transportTimesTruck1, costTruck1);
printf("卡车2需要运输%d次,费用为%d元\n", transportTimesTruck2, costTruck2);
return 0;
}
这样,你就可以根据用户输入的给定吨数,计算出完成运输所需的最小成本,并输出每辆卡车需要运输的次数和费用,以提供建议的方案。