首頁 >後端開發 >C++ >檢查一個數字是否以另一個數字結尾

檢查一個數字是否以另一個數字結尾

WBOY
WBOY轉載
2023-08-26 13:25:031270瀏覽

檢查一個數字是否以另一個數字結尾

一個典型的程式設計挑戰是確定一個數字是否以另一個數字結尾。為了解決這個問題,你必須識別給定數字的最後幾位,並檢查它們是否與另一個數字相符。許多應用程序,包括資料處理、字串操作和數值分析,經常涉及這種操作。程式設計方法包括將數字轉換為字串、模運算和邏輯運算子的使用,用於解決這個挑戰。對於想要在操作數字和解決演算法問題方面變得更好的初學者和中級程式設計師來說,這個主題應該是有興趣的。

方法

有多種方法可以檢查一個數字是否以另一個數字結尾。以下是兩種常見的方法 -

  • 使用取模運算子(%)

  • 使用字串轉換

#方法1:使用取模運算子(%)

如果兩個數字被分割,取模運算子回傳餘數。利用取模運算符,以第二個數字作為除數,我們可以確定一個數字是否以另一個數字結尾。如果結果等於第二個數字,則第一個數字以第二個數字結尾。

常用的數學運算子稱為取模運算符,它會傳回除法運算的餘數,並以符號%表示。使用取模運算子來驗證一個數是否以另一個數結尾是一種有用的應用。

我們可以使用模運算子來取得一個數"n"除以另一個數"m"後的剩餘值,以確定這兩個數是否連續。如果餘數等於m,則n以m結尾。如果不等於m,則不是。

文法

這個方法的語法如下 −

  • 檢查一個數字是否以另一個數字結尾的函數

bool endsWith(int number, int ending) {
   int digits = floor(log10(ending)) + 1; 
  • 取得結束數字的位數

#
int divisor = pow(10, digits); 
  • 計算除數

#
int remainder = number % divisor; 
  • 計算餘數

#
return remainder == ending; }
  • 如果餘數等於結束數字,則傳回true

#在這裡,number 是原始數字,ending 是檢查是否在 number 的末尾的數字。表達式 floor(log10(ending)) 1 計算了 ending 的位數,而 pow(10, digits) 計算了除數。然後使用取模運算子 % 計算了 number 除以 divisor 的餘數。如果餘數等於 ending,則函數傳回 true,表示 numberending 結尾。

演算法

模運算子在以下的C 過程中被用來確定一個整數是否以另一個數字結尾 −

步驟 1 - 輸入 num 和 end Num,這兩個要進行比較的數字。

第二步 - 使用模運算子(%)計算num除以10的餘數部分。

步驟 3 − 如果數字以結束數字結尾,且餘數等於結束數字,則傳回 true。

步驟4 - 如果不是,則將數字除以10,並重複步驟1-2,直到數字等於0。

步驟5 - 如果迴圈在沒有匹配的情況下結束,數字不以end Num結尾,因此傳回false。

範例 1

使用取模運算子檢查一個數字是否以另一個數字結尾的範例 −

在這個範例中,endsWith函數接受兩個整數參數number和ending。然後使用取模運算子%來確定數字的最後一位是否等於ending。如果是,則函數傳回true,否則傳回false。

在呼叫endsWith方法之前,我們先在主函數中定義了number和ending。如果該方法回傳true,我們印出一條訊息,說明該數字以ending結尾。如果不是,則列印一則訊息,表示該數字不以ending結尾。

要注意的是,這只是一個非常簡單的例子,有許多不同的方法(如字串操作方法)可以確定一個數字是否以另一個數字結尾。取模運算子是一種受歡迎且有效的技術。

#include <iostream>
using namespace std;

bool endsWith(int number, int ending) {
   return (number % 10) == ending; // Check if last digit is equal to ending
}

int main() {
   int number = 12345;
   int ending = 5;

   if (endsWith(number, ending)) {
      cout << number << " ends with " << ending << endl;
   }
   else {
      cout << number << " does not end with " << ending << endl;
   }

   return 0;
}

輸出

12345 ends with 5

方法二:使用字串轉換

使用字串操作函數,這種技術透過將兩個整數轉換為字串來檢查它們的末尾是否匹配。一種常見的方法是使用to_string()函數將數字轉換為字串,然後找到第一個字串的最後幾個字元是否與第二個字串的最後幾個字元相符。

文法

以下是在C 中檢查一個數字是否以另一個數字結尾的字串轉換方法的語法,不包含實際程式碼:

  • 將數字轉換為字串

#
string num1_str = to_string(num1);
string num2_str = to_string(num2);
  • 檢查字串的最後幾個字元是否相等

bool ends_with = num1_str.substr(num1_str.size() - num2_str.size()) == num2_str;

演算法

這裡有一個C 演算法,用來確定一個數字是否以另一個數字結尾 −

第一步 - 開始時為這兩個整數建立字串。

步驟 2 - 假設第二個整數稱為 n,確定其長度。

步骤 3 - 如果第一个数字的长度小于 n,则返回 false。

步骤 4 − 将 substr 方法应用于第一个数字,以提取最后 n 位数字。

第五步 - 使用stoi方法将第二个数字和检索到的子字符串转换为整数。比较这两个整数

步骤6 - 如果它们相等,则返回true。如果不相等,则返回false。

Example 2

使用 to_string() 函数将这两个数字转换为字符串。然后使用 substr() 函数提取第一个字符串的最后几个字符,使其与第二个字符串的长度相匹配。然后使用 == 运算符将这些提取的字符与第二个字符串进行比较。

#include <iostream>
#include <string>

using namespace std;

int main() {
   int num1 = 123456;
   int num2 = 56;

   string str1 = to_string(num1);
   string str2 = to_string(num2);

   if (str1.substr(str1.length() - str2.length()) == str2) {
      cout << "Number 1 ends with number 2" << endl;
   } else {
      cout << "Number 1 does not end with number 2" << endl;
   }

   return 0;
}

输出

Number 1 ends with number 2

结论

总之,使用substr()函数比较每个字符串的最后几个字符,或者使用模运算来分离每个数字的最后几位数并直接比较它们,这两种方法都可以判断一个数字是否以另一个数字结尾。这两种策略都很有效,并且可以使用基本的C++编程结构来实践。许多需要模式匹配的数值和计算应用都可以从这个任务中受益。

以上是檢查一個數字是否以另一個數字結尾的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除