此程序必须计算平铺地板所需的瓷砖数量。瓷砖是8英寸×8英寸。可以使用瓷砖作为整体或可以使用瓷砖的一部分。只能从瓷砖上切下一块可用的零件。也就是说,如果从瓷砖上切下一块,则必须扔掉瓷砖的其余部分。程序接受房间的长度和宽度,并返回使用的整个瓷砖的数量以及使用了多少部分瓷砖。长度以英寸为单位。
我已经尝试过这个问题并且没有问题获得所需的完整瓷砖的数量,但我似乎没有运气所需的部分瓷砖数量。我已经为它编写了这个程序。
#include<stdio.h>
int main()
{
int l,b,full,l1,bl,part;
float ar2,ar3;
scanf("%d%d,&l,&b);
ar3=(float)(l*b)/64;
l1=l/8;
bl=b/8;
full=l1*bl;
ar2=ar3-full;
part=ar2*2;
printf("%d\n%d",full,part);
return 0;
}
答案 0 :(得分:0)
在任一方向上都有0或1行部分切片。如果两个方向都有部分瓷砖,那么还有一个部分角落瓷砖。
您可以使用模数运算符%
来查找是否存在任何部分切片:
// Calculation of partial tiles
part = 0;
int partL = l%8;
int partB = b%8;
if (partL > 0) {
part += bl; // Partial tiles along one edge
}
if (partB > 0) {
part += l1; // Partial tiles along the other edge
}
if (partL > 0 && partB > 0) {
part += 1; // Partial corner tile;
}
注意:强>
l
和1
的字形通常难以区分,因此在变量名称中使用它们时要小心。如果你不加思索地使用它们,代码将更难以阅读。
答案 1 :(得分:0)
常见的方法是让瓷砖平行于墙壁。在这种情况下,您可以找到两个方向所需的图块数量,并且图块的总数将是这两个数字的乘积。获得部分切片数量的技巧是分别计算整个切片的数量,然后计算整个和部分切片的数量。代码变为:
#include<stdio.h>
int main()
{
int l,b,full,l1,bl,part;
int partl = 0, partb = 0;
scanf("%d%d",&l,&b);
l1=l/8; // number of whole tiles
if ((l % 8) != 0) {
partl = 1; // will need one partial at the end
}
// second direction
bl=b/8;
if ((b % 8) != 0) {
partb = 1; // will need one partial at the end
}
full=l1*bl; // total number of whole tiles
if (partl) l1 += 1; // total (including partial) per direction
if (partb) bl += 1;
part = l1 * bl - full; // partial is total - number of whole tiles
printf("%d\n%d",full,part);
return 0;
}