📜  从数字中删除数字 c++ (1)

📅  最后修改于: 2023-12-03 15:36:18.310000             🧑  作者: Mango

从数字中删除数字(使用 C++ 实现)

在该文章中,我们将学习如何在 C++ 中从数字中删除指定的数字。我们会介绍两种方法来实现这个功能。

方法一:将数字转换为字符串

思路: 将数字转换为字符串,然后遍历字符串,删除指定的数字,最后再将处理后的字符串转换回数字。

代码实现:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int num = 1234567;
    int del_num = 5;
    string str_num = to_string(num);
    string str_res = "";

    for(int i=0; i<str_num.length(); i++)
    {
        if(str_num[i] != del_num+'0')
            str_res += str_num[i];
    }

    int res = stoi(str_res);
    cout << res << endl;

    return 0;
}
解释:
  • 首先,我们将原始数字 num 赋值为 1234567,需要删除数字 5
  • 使用 to_string 函数将数字转换为字符串。
  • 遍历字符串,判断每个字符是否等于指定的数字,如果不等于,则将该字符添加到结果字符串 str_res 中。
  • 最后,使用 stoi 函数将结果字符串转换回数字,并输出结果。

注意:要将字符类型的数字转换为整型数字,需要将字符型数字加上字符'0',才能得到对应的整型数字,'5'+'0'=5353-48=5,真实的数字是正确的数字5。

方法二:使用取余和除法运算

思路:在每一轮取余运算之后,将值乘以10,然后将该数字除以10。如果在某一轮取余运算中,得到的余数不等于指定的数字,我们就保存该余数,并将其加入结果数字中。

代码实现:
#include <iostream>
using namespace std;

int main()
{
    int num = 1234567;
    int del_num = 5;
    int res = 0;
    int i = 1;
    while(num)
    {
        int r = num % 10;
        num /= 10;
        if (r != del_num)
            res += r * i, i *= 10;
    }
    cout << res << endl;
    return 0;
}
解释:
  • 首先,我们将原始数字 num 赋值为 1234567,需要删除数字 5
  • 在每个循环迭代中,我们使用 (num % 10) 取余运算,求出数字 num 的个位数,并将余数保存在变量 r 中。然后,使用 (num / 10) 除法运算来将 num 等于其自身除以10的值。
  • 如果 r 不等于删除数字 del_num,那么我们将 r 乘以 i,并将 i 设置为10的下一个幂次方。
  • 最后,我们将所有的值加起来,就得到了我们需要的结果。
总结

在本文中,我们演示了两种以 C++ 实现从数字中删除指定数字的方法。两个方法都可以提供有效的解决方案。 当选择哪种方法时,应考虑两种方法的要素,如数字大小、删除数字的数量以及其他操作的类型。