編寫一個 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告