当一个数的基数是负数时,将这个数转换为负进制数时,大体思路和正数的情况一样,但是因为基数是负数,所以计算出来的余数就有可能是负数所以,需要在余数是负数时:将余数 + 基数的绝对值,商 + 1。
代码如下:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {int n, R;
//R为基数,输入保证一定为负数cin >> n >> R;int m = n;vector<int> a;while(n) {int x = n % R;//余数int y = n / R;//商if(x < 0) {x = x + abs(R);y ++;}n = y;a.push_back(x);}reverse(a.begin(), a.end());cout << m << '=';for(int i = 0; i < a.size(); i ++){if(a[i] > 9) {char c = a[i] - 10 + 'A';cout << c;}else {cout << a[i];}} cout << "(base" << R << ")"; return 0;
}