卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16333本站已运行3317

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

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

一个典型的编程挑战是确定一个数字是否以另一个数字结尾。为了解决这个问题,你必须识别给定数字的最后几位,并检查它们是否与另一个数字匹配。许多应用程序,包括数据处理、字符串操作和数值分析,经常涉及这种操作。编程方法包括将数字转换为字符串、模运算和逻辑运算符的使用,用于解决这个挑战。对于想要在操作数字和解决算法问题方面变得更好的初学者和中级程序员来说,这个主题应该是有兴趣的。

方法

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

  • 使用取模运算符(%)

  • 使用字符串转换

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

卓越飞翔博客
上一篇: 使用 C# 逐行读取文本文件的最快方法有哪些?
下一篇: 解决C++代码中出现的“error: 'function' does not have a return type”问题

相关推荐

留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏