檢查一個數字是否以另一個數字結尾
一個典型的程式設計挑戰是確定一個數字是否以另一個數字結尾。為了解決這個問題,您必須識別給定數字的最後幾位數字,並檢查它們是否與另一個數字匹配。許多應用程式,包括資料處理、字串操作和數值分析,經常包含這種型別的操作。程式設計方法包括將數字轉換為字串、模運算以及使用邏輯運算子來解決此挑戰。希望提高數字操作和解決演算法問題能力的初學者和中級程式設計師應該對這個主題感興趣。
方法
有幾種方法可以檢查一個數字是否以另一個數字結尾。以下是兩種常見的方法 -
使用模運算子 (%)
使用字串轉換
方法 1:使用模運算子 (%)
如果兩個數字被分割,則模運算子返回餘數。利用模運算子並將第二個數字作為除數,將使我們能夠確定一個數字是否以另一個數字結尾。如果結果等於第二個數字,則第一個數字以第二個數字結尾。
常用的數學運算子,稱為模運算子,返回除法運算的餘數,它由 % 符號表示。驗證多個數字是否以另一個數字結尾是一個有用的模運算子的應用。
我們可以使用模運算子來獲取將數字“n”除以另一個數字“m”後的剩餘值,以確定這兩個數字是否連續。如果餘數等於 m,則 n 以 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,表示number以ending結尾。
演算法
以下 C++ 過程使用模運算子來確定一個整數是否以另一個數字結尾 -
步驟 1 - 輸入 num 和 end Num,這兩個要比較的數字。
步驟 2 - 利用模運算子 (%) 計算 num 除以 10 的剩餘部分。
步驟 3 - 如果數字以 end Num 結尾且餘數等於 end Num,則返回 true。
步驟 4 - 如果不是,則將數字除以 10 並重復步驟 1-2,直到數字等於 0。
步驟 5 - 如果迴圈結束時沒有匹配,則數字不以 end Num 結尾,因此返回 false。
示例 1
模運算子的一個示例,用於檢查一個數字是否以另一個數字結尾 -
在本例中,endsWith 函式接受兩個整數引數 number 和 ending。然後使用模運算子 % 來確定數字的最後一位數字是否等於 ending。如果等於,則函式返回 true,否則返回 false。
在 main 函式中,我們首先定義 number 和 ending,然後呼叫 endsWith 方法。如果方法返回 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
方法 2:使用字串轉換
使用字串操作函式,此方法透過將兩個數字都轉換為字串來檢查這兩個數字的末尾是否匹配。一種常見的方法是使用 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++ 編寫的演算法,用於確定一個數字是否以另一個數字結尾 -
步驟 1 - 首先為兩個整數建立字串。
步驟 2 - 假設第二個整數稱為 n,確定其長度。
步驟 3 - 如果第一個數字的長度小於 n,則返回 false。
步驟 4 - 將 substr 方法應用於第一個數字以提取最後 n 位數字。
步驟 5 - 應用 stoi 方法將第二個數字和檢索到的子字串轉換為整數。在
步驟 6 - 如果它們相等,則給出 true。如果不是,則返回 false。
示例 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++ 中。這兩種方法都執行良好,並且可以使用基本的 C++ 程式設計結構付諸實踐。許多需要模式匹配的數值和計算應用都可以從這項任務中受益。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP