0

我需要这样做,称为“十进制右循环移位”。例如,如果输入是8652输出将是2865.

有没有办法在 CPP 中执行此操作而无需转换为字符串和字符串操作?只需使用算术运算、循环和转换为二进制。

4

2 回答 2

2

如果 number 中的位数严格为 4,则可以执行以下操作:

int src = 1234;

int dest = (src / 10) + (src % 10) * 1000;

在这里,如果最后src0,它将dest是 3 位数。你需要处理它。

对于其他长度,您需要适当调整代码。

于 2016-06-09T18:00:40.600 回答
0

实际上,对于任何 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
}
于 2016-06-09T19:13:20.487 回答