21xrx.com
2024-09-19 10:02:05 Thursday
登录
文章检索 我的文章 写文章
C++交换数位
2023-07-05 11:15:09 深夜i     --     --
C++ 交换 数位

C++是一种非常流行的编程语言,被广泛应用于各种领域。它的语法简洁明了,可以方便地实现各种算法和功能。其中,交换数位是一种在编程中常用的功能之一,可以用于处理数字中各个位数的问题。在C++中,实现交换数位可以采用多种方法,下面将介绍其中的几种。

方法一:使用算法

第一种方法是使用算法。这种方法利用的是C++中提供的算法函数,如reverse、sort等,对数字的各个位数进行操作。例如,将一个整数的各个位数反转:


int reverse(int n)

{

  int reversed = 0;

  while (n != 0)

  {

    reversed = reversed * 10 + n % 10;

    n /= 10;

  }

  return reversed;

}

这个函数将输入的整数n进行反转,最终将其返回。例如,输入1234,输出4321。同时,这个函数也可以用于交换整数的各个位数。例如,将1234交换为3412,可以用以下代码:


int swap_digits(int n)

{

  int reversed = reverse(n);

  int swapped = reversed / 1000 + (reversed % 10) * 1000 + ((reversed / 10) % 10) * 10 + ((reversed / 100) % 10) * 100;

  return swapped;

}

这个函数将输入的整数n进行反转,并将其个位和千位互换,十位和百位互换,最终将交换后的数字返回。例如,输入1234,输出3412。

方法二:使用位运算

第二种方法是使用位运算。这种方法利用的是C++中的位运算符号,如左移、右移、按位异或等,对数字的各个位数进行操作。例如,将一个整数的各个位数反转和交换:


unsigned int reverse_bits(unsigned int n)

{

  unsigned int rev = 0;

  while (n > 0)

  {

    rev = (rev << 1) | (n & 1);

    n >>= 1;

  }

  return rev;

}

unsigned int swap_bits(unsigned int n)

{

  return ((n & 0x0f0f0f0f) << 4) | ((n & 0xf0f0f0f0) >> 4);

}

这两个函数都是利用位运算对输入的整数进行操作,分别实现了反转和交换数字的各个位数。例如,输入1234,输出4321和3412。

方法三:使用字符串

第三种方法是利用字符串。这种方法将整数转换为字符串后进行处理,再将结果转换回整数。例如,将一个整数的各个位数反转和交换:


#include <algorithm>

#include <string>

int reverse_digits(int n)

{

  std::string str = std::to_string(n);

  std::reverse(str.begin(), str.end());

  return std::stoi(str);

}

int swap_digits(int n)

{

  std::string str = std::to_string(n);

  std::swap(str[0], str[3]);

  std::swap(str[1], str[2]);

  return std::stoi(str);

}

这两个函数都是利用C++中的STL库,对输入的整数进行字符串处理,并改变字符串中的内容,最终将结果转换回整数。例如,输入1234,输出4321和3412。

综上所述,C++提供了多种方法来实现交换数字的各个位数。程序员可以根据具体的需求和场景,选择不同的方法来实现相应的功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复