检查一个数字是否以另一个数字结尾


一个典型的编程挑战是确定一个数字是否以另一个数字结尾。为了解决这个问题,您必须识别给定数字的最后几位数字,并检查它们是否与另一个数字匹配。许多应用程序,包括数据处理、字符串操作和数值分析,经常包含这种类型的操作。编程方法包括将数字转换为字符串、模运算以及使用逻辑运算符来解决此挑战。希望提高数字操作和解决算法问题能力的初学者和中级程序员应该对这个主题感兴趣。

方法

有几种方法可以检查一个数字是否以另一个数字结尾。以下是两种常见的方法 -

  • 使用模运算符 (%)

  • 使用字符串转换

方法 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,表示numberending结尾。

算法

以下 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++ 编程结构付诸实践。许多需要模式匹配的数值和计算应用都可以从这项任务中受益。

更新于: 2023-07-31

1K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.