给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。
当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。
若 M 为负数,应在结果中保留负号。
数据范围:
要求:空间复杂度,时间复杂度
7,2
"111"
10,16
"A"
#include <stdio.h> char* solve(int M, int N, char arr[1000]) { // write code here //char arr[1000] = {; int count = 0; int mid = M; int i = 0; while (M) { M /= N; count++; } int *** = 1; if (mid < 0) { mid = -mid; *** = 0; } for (i = count - 1; i >= 0; i--) { int z = mid % N; if (mid == N) { arr[i] = 49; } if (z < 10) { arr[i] = z + 48; } else { arr[i] = z + 55; } mid = mid / N; } if (*** == 0) printf("-%s", arr); else printf("%s", arr); return arr; } int main() { int n = 12; int m = 23; char arr[1000] = {0}; solve(m, n,arr); return 0; }