编写一个 C++ 程序,将给定数字中的所有 0 替换为 5。
给定一个整数 N,任务是将数字中出现的所有 0 替换为 '5'。但是,以 '0' 开头的数字不能替换为 '5',因为它保持不变。例如,
输入-1 −
N= 1007
输出 −
1557
说明 − 给定数字有两个零,当用 '5' 替换时,输出结果为 1557。
输入-2 −
N = 00105
输出 −
155
说明 − 由于给定数字以 '0' 开头,可以忽略,并且在将中间的 0 替换为 '5' 之后,输出结果为 155。
解决此问题的方法
要将给定数字中的所有 0 替换为 '5',我们可以找到并提取数字的最后一位数字。如果该数字的最后一位数字是 '0',则将其值更改并替换为 '5',然后提取另一位数字。但是,必须忽略给定数字中的任何前导 '0'。
可以使用递归方法解决此问题,我们首先提取最后一位数字,然后在提取该数字的其他数字时再次调用同一函数。
输入一个数字 N。
一个整数函数 converToFive(int N) 以数字作为输入,并通过将所有 0 替换为 '5' 返回修改后的数字。
在基本情况下,如果数字是 '0',则返回 0,否则提取该数字的最后一位数字并检查,
如果数字的最后一位数字是 '0',则将其值替换为 '5'。
返回递归函数,该函数通过除以 '10' 并乘以 '10' 来获取数字的另一位数字。
返回输出,该输出通过将其添加到其中来提取最后一位数字。
示例
#include <bits/stdc++.h> using namespace std; int convertToFive(int N) { if(N==0){ return 0; } int last_digit= N%10; if(last_digit==0) last_digit=5; return convertToFive(N/10)*10 +last_digit; } int main() { int N= 14006; cout << convertToFive(N) << endl; }
输出
如果运行以上代码,则它将打印输出为:
14556
由于给定数字中有两个 0,因此在替换数字 14006 后,它将变为 14556。
广告