祖父比孙子大45岁,且孙子和爷爷年龄的十位和个位正好颠倒,请列举出爷爷可能的所有的年龄。(已知爷爷不超过100岁)。利用c++完成上述题目。
以下是用C++代码来实现:
#include<iostream>
using namespace std;
int main()
{
for(int i=1;i<=100;i++) //遍历所有可能年龄
{
int grandson = i - 45; //计算孙子的年龄
if(grandson<0) continue; //孙子年龄小于0,跳过
int grandpa = i; //记录爷爷的年龄
int tmp = grandpa/10 + grandpa%10*10; //记录爷爷年龄的十位个位交换后的值
if(tmp == grandson) cout<<grandpa<<" "; //如果交换后的值等于孙子年龄,则输出
}
return 0;
}
输出结果如下:
50 61 72 83 94
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
首先,我们可以将题目描述的关系用数学表示。设祖父的年龄为x
,孙子的年龄为y
,则我们有如下方程:
我们可以使用C++编写一个程序,遍历所有可能的祖父的年龄(从45到99岁),然后检查是否满足上述条件。以下是一个可能的C++实现:
#include <iostream>
int main() {
for (int x = 45; x < 100; ++x) {
int y = x - 45;
int x_10 = x / 10;
int x_1 = x % 10;
int y_10 = y / 10;
int y_1 = y % 10;
if (x_10 == y_1 && x_1 == y_10) {
std::cout << "祖父的年龄:" << x << " 孙子的年龄:" << y << std::endl;
}
}
return 0;
}
这个程序将输出满足条件的年龄组合。请注意,这个实现可能不是最优的,但它可以解决问题。
C++一直被称作永不过时的开发语言,游戏、服务器、人工智能等领域都必须用到他!
今天我整合了2021年100道大厂高频C++基础面试题,里面包含了C++很多基础知识点,干货满满。因内容较多,篇幅较长,所以会分成上下两篇讲解,强烈建议小伙伴们收藏!
下面我们一起来测验下, 大家一起看看能闯多少关?
我来回答一下这个问题。
首先我们需要明确问题:已知祖父比孙子大45岁,且孙子和爷爷年龄的十位和个位正好颠倒,请列举出爷爷可能的所有年龄。根据提示:通过循环遍历0-100岁之间的所有人年龄,并计算他们与孙子年龄的差值是否为45,同时判断爷爷和孙子的年龄的十位和个位数字是否颠倒,符合条件则可以加入符合答案的年龄列表中。
那么我们可以先编写一个函数判断两个数字的十位和个位是否颠倒,代码如下:
bool isReverse(int a, int b) { if ((a % 10 == b / 10) && (a / 10 == b % 10)) { return true; } else { return false; } }
接下来,我们可以用两个循环遍历0-100岁之间的所有人年龄,并计算他们与孙子年龄的差值是否为45,同时判断爷爷和孙子的年龄的十位和个位数字是否颠倒,符合条件则可以加入符合答案的年龄列表中,代码如下:
for (int grandpaAge = 0; grandpaAge <= 100; grandpaAge++) { int grandsonAge = grandpaAge - 45; if (grandsonAge >= 0 && grandsonAge <=100 && isReverse(grandpaAge, grandsonAge)) { cout << "grandpaAge: " << grandpaAge << endl; } }
完整代码如下: