情景引入:你是某运输公司的员工,公司最近发现有些又大又轻的箱子在运输中占据了宝贵的空间,于是提出对于这类箱子的收费按体积收费而不是按重量收费,公司规定用箱子的体积除以166(这是每磅允许的立方英寸数),如果除得的商(也就是箱子的空间重量)大于箱子的实际重量,那么运费就按空间重量来计算。(除以166是针对国际运输,国内运输除以194),但如果用人工来计算箱子的空间重量就显得耗时耗力,于是公司想要让人编写一个计算箱子空间重量的程序,你初学了C语言于是自告奋勇的接下了这分差事。
/*计算一个高为8,长为12,宽为10的箱子的空间重量*/
#include <stdio.h>
int main(viod)
{
int height, lenght, width, volume, weight;
height = 8;
lenght = 12;
width = 10;
volume = (height * lenght * width);
weight = (volume / 166);
printf("Dimensions: %dx%dx%d\n", lenght, width, height);
printf("Volume (cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight);
return 0;
}
这段程序的输出结果为:
Dimensions:12108
Volume (cubic inches): 960
Dimensional weight (pounds): 5
这里的960为箱子的体积,5为箱子的空间重量
你拿着编写的程序给上司们检查,经过检查程序并没有错误,但却发现一个问题,就是程序计算的空间重量结果“5”是向下取整后的结果,而实际结果为5.7831...,你解释说在C语言中两个整数相除所得结果会被“截断”,小数点后的所有数字都会丢失。上司听后说那能不能往上取整,你说只要在除以166之前把体积加上165就可以,于是你改编了程序
#include <stdio.h>
int main(viod)
{
int height, lenght, width, volume, weight;
height = 8;
lenght = 12;
width = 10;
volume = (height * lenght * width);
weight = (volume + 165) / 166;
printf("Dimensions: %dx%dx%d\n", lenght, width, height);
printf("Volume (cubic inches): %d\n", volume);
printf("Dimensional weight (pounds): %d\n", weight);
return 0;
}
这段程序的输出结果为:
Dimensions:12108
Volume (cubic inches): 960
Dimensional weight (pounds): 6
这里的960为箱子的体积,6为箱子的空间重量。
上司满意的笑了,你的C语言编写能力又得到了提高。