第一题方法一(代码)
#include <iostream>
int main() {
// 每边种植的树的数量
int treesPerSide = 8;
// 正方形有四条边
int sides = 4;
// 顶点上的树被重复计算了,需要减去
int overCountedTrees = 4;
// 计算总的树的数量
int totalTrees = treesPerSide * sides - overCountedTrees;
// 输出结果
std::cout << "四周一共种了 " << totalTrees << " 棵树。" << std::endl;
return 0;
}
第一题方法二(代码)
#include <iostream>
int main() {
// 每边原本要种的树的数量(包括顶点)
int treesPerSideIncludingCorners = 8;
// 另一组对边(不包括顶点)每边要种的树的数量
int treesPerSideExcludingCorners = treesPerSideIncludingCorners - 2;
// 正方形有两组这样的对边
int pairsOfSides = 2;
// 计算总的树的数量
// 一组对边(包括顶点)共 8 * 2 = 16 棵
// 另一组对边(不包括顶点)共 (8-2) * 2 = 12 棵
int totalTrees = treesPerSideIncludingCorners * pairsOfSides + treesPerSideExcludingCorners * pairsOfSides;
// 或者更简洁地,直接使用变量进行计算
// int totalTrees = treesPerSideIncludingCorners * 2 + (treesPerSideIncludingCorners - 2) * 2;
// 输出结果
std::cout << "四周一共种了 " << totalTrees << " 棵树。" << std::endl;
return 0;
}
第一题方法三(代码)
#include <iostream>
int main() {
// 每边被分成的等份数(即树之间的空隙数)
int segmentsPerSide = 8 - 1; // 因为8棵树之间有7个空隙
// 正方形有四条边
int sides = 4;
// 计算总的等份数,即树的数量
int totalTrees = segmentsPerSide * sides + 4; // 加4是因为四个顶点上的树没有算在空隙里
// 但实际上,由于我们是按空隙来算的,而四个顶点的树已经隐含在每边的计算中了
// 所以我们不需要额外加4,上面的+4是多余的,应该直接去掉
// 因此,正确的计算方式是:
int totalTreesCorrect = segmentsPerSide * sides;
// 输出结果
std::cout << "四周一共种了 " << totalTreesCorrect << " 棵树。" << std::endl;
return 0;
}
第二题方法一(代码)
#include <iostream>
int main() {
// 初始时花生油和瓶的总重量
int totalWeightInitial = 800;
// 吃掉一半油后,花生油和瓶的总重量
int totalWeightAfterEatingHalf = 550;
// 计算半瓶油的重量
int halfOilWeight = totalWeightInitial - totalWeightAfterEatingHalf;
// 计算整瓶油的重量
int fullOilWeight = halfOilWeight * 2;
// 计算空瓶的重量
int bottleWeight = totalWeightInitial - fullOilWeight;
// 输出结果
std::cout << "瓶里原有 " << fullOilWeight << " 克油。" << std::endl;
std::cout << "空瓶重 " << bottleWeight << " 克。" << std::endl;
return 0;
}
第二题方法二(代码)
#include <iostream>
int main() {
// 初始时花生油和瓶的总重量
int totalWeightInitial = 800;
// 吃掉一半油后,花生油和瓶的总重量
int totalWeightAfterEatingHalf = 550;
// 计算半瓶油的重量
int halfOilWeight = totalWeightInitial - totalWeightAfterEatingHalf;
// 计算空瓶的重量
int bottleWeight = totalWeightAfterEatingHalf - halfOilWeight;
// 由于已经计算出半瓶油的重量,所以整瓶油的重量是半瓶油的两倍
int fullOilWeight = halfOilWeight * 2;
// 但实际上,我们在这里不需要再次计算fullOilWeight,因为它已经在上面的步骤中计算过了
// 我们只是为了与问题描述保持一致而保留了这一行代码
// 输出结果
std::cout << "瓶里原有 " << fullOilWeight << " 克油。" << std::endl;
std::cout << "空瓶重 " << bottleWeight << " 克。" << std::endl;
return 0;
}
第二题方法三(代码)
#include <iostream>
int main() {
// 初始时花生油和瓶的总重量
int totalWeightInitial = 800;
// 吃掉一半油后,花生油和瓶的总重量(此时为半瓶油加空瓶的重量)
int halfOilAndBottleWeight = 550;
// 根据第三种方法,一瓶油和两个瓶的总重量是半瓶油加空瓶重量的两倍
int fullOilAndDoubleBottleWeight = halfOilAndBottleWeight * 2;
// 从这个总重量中减去初始时花生油和瓶的总重量,得到的就是一个空瓶的重量
int bottleWeight = fullOilAndDoubleBottleWeight - totalWeightInitial;
// 既然已经知道了空瓶的重量,那么整瓶油的重量就是初始总重量减去空瓶重量
int fullOilWeight = totalWeightInitial - bottleWeight;
// 但实际上,由于我们是通过双倍的重量差来计算的空瓶重量,所以整瓶油的重量也可以直接从双倍总重量中减去双倍空瓶重量得到,
// 不过在这里我们已经有了整瓶油的重量,所以这一步是多余的。
// 输出结果
std::cout << "瓶里原有 " << fullOilWeight << " 克油。" << std::endl;
std::cout << "空瓶重 " << bottleWeight << " 克。" << std::endl;
return 0;
}