我需要这样做,称为“十进制右循环移位”。例如,如果输入是8652
输出将是2865
.
有没有办法在 CPP 中执行此操作而无需转换为字符串和字符串操作?只需使用算术运算、循环和转换为二进制。
如果 number 中的位数严格为 4,则可以执行以下操作:
int src = 1234;
int dest = (src / 10) + (src % 10) * 1000;
在这里,如果最后src
有0
,它将dest
是 3 位数。你需要处理它。
对于其他长度,您需要适当调整代码。
实际上,对于任何 int 数,它都可以像这样简单快捷地完成:
#include <iostream>
using namespace std;
int concatenate (int x, int y)
{
int pow = 10;
while (y >= pow)
pow *= 10;
return x * pow + y;
}
int main()
{
int rpm = 8652;
// Cyclic Right Shift
int lastDigit = rpm % 10; //getting the last digit
int otherDigits = (rpm - lastDigit)/10; //rest of the digits
int CRS = concatenate(lastDigit, otherDigits); //concatenation
}