我需要这样做,称为"十进制右循环移位"。例如,如果输入为8652
则输出将2865
。
有没有办法在不转换为字符串和字符串操作的情况下在 CPP 中执行此操作?仅使用算术运算,循环并转换为二进制。
如果数字中的位数严格为 4,您可以执行以下操作:
int src = 1234;
int dest = (src / 10) + (src % 10) * 1000;
在这里,如果src
末尾有0
,则dest
为3位数。你需要处理这个问题。
对于其他长度,您需要适当调整代码。
实际上,对于任何整数,都可以像这样简单快捷地完成:
#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
}