如何在不使用if语句的情况下移动C++中第一个位置的最后一位数字

问题描述

**例如 123== 312 如何在不使用if语句的情况下移动C++中第一个位置的最后一位

    #include <iostream>
    using namespace std;
    int main(){
        int n=123;
        
        while(n!=0){
          
        }
        cout<<n;//==312
    }

解决方法

你可以这样做

  1. 获取最后一位数字和其他数字
  2. 找出与其他数字相邻的数字的位置
  3. 把最后一个数字放在那里
#include <iostream>

int moveDigit(int n) {
    int res = n / 10;
    int delta = 1;
    while (delta <= res) delta *= 10;
    return (n % 10) * delta + res;
}

int main(){
    int n=123;
    
    n = moveDigit(n);
    
    std::cout<<n;//==312
}

内联函数:

#include <iostream>

int main(){
    int n=123;
    
    int res = n / 10;
    int delta = 1;
    while (delta <= res) delta *= 10;
    n = (n % 10) * delta + res;
    
    std::cout<<n;//==312
}
,

我可能会因此而讨厌

#include <string>
#include <utility>
int main() {
 int n =123;
 std::string n_s{std::to_string(n)};
 std::swap(n_s.front(),n_s.back());
 n=std::stoi(n_s);
}