用 C++ 编写一个程序,将给定数字中的所有 0 替换为 5
给定一个整数N,任务是将数字中出现的所有0替换为“5”。但是,前导“0”的数字不能替换为“5”,因为它保持不变。例如,
输入1-
N= 1007
输出-
1557
说明-给定的数字有2个零,当被“5”替换时,输出为1557。
输入2-
N = 00105
输出-
155
说明-由于给定的数字以可以忽略的前导“0”开头,并且将中间的0替换为“5”后的输出结果为155。
解决这个问题的方法
要将给定数字中的所有0替换为“5”,我们可以找到并提取该数字的最后一位。如果该数字的最后一位数字是“0”,则更改并将该值替换为“5”并提取另一个数字。但是,必须忽略给定数字中的任何前导“0”。
这个问题可以使用递归方法来解决,我们将首先提取最后一位数字,然后在提取该数字的另一位数字时再次调用相同的函数。
输入一个数字N。
Integer函数converToFive(intN)将数字作为输入,并通过将所有0替换为“5”来返回修改后的数字。
在基本情况下,如果数字为“0”,则返回0,否则提取该数字的最后一位并检查,
如果数字的最后一位是“0”,则用“5”替换该值。
返回递归函数,该函数通过除以“10”并乘以“10”来获取数字的另一位数字。
通过将其添加到其中来返回提取最后一位数字的输出。
示例
#include输出结果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。