编写一个 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。

更新于: 2021年2月5日

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告