c语言 n进制转为m进制
时间: 2024-05-03 20:21:48 浏览: 12
以下是将n进制转换为m进制的C语言代码:
```
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void convert(char *num, int n, int m)
{
char temp[MAX_LEN];
int i, j, k, len;
len = strlen(num);
i = 0;
while (len > 0)
{
int rem = 0;
for (j = len - 1; j >= 0; j--)
{
int digit = num[j] - '0';
num[j] = digits[digit * n + rem];
rem = (digit * n + rem) / m;
}
while (rem > 0)
{
temp[i++] = digits[rem % m];
rem /= m;
}
while (num[0] == '0' && len > 1)
{
memmove(num, num + 1, len--);
}
}
for (k = i - 1; k >= 0; k--)
{
printf("%c", temp[k]);
}
}
int main()
{
char num[MAX_LEN];
int n, m;
printf("Enter number: ");
scanf("%s", num);
printf("Enter base of number: ");
scanf("%d", &n);
printf("Enter base to convert to: ");
scanf("%d", &m);
printf("Converted number: ");
convert(num, n, m);
return 0;
}
```
该代码使用了一个 `digits` 数组来存储数字字符,使用了 `convert()` 函数来进行转换。该函数接收一个字符串、一个源进制和一个目标进制作为参数,然后将字符串从源进制转换为目标进制,并将结果打印出来。在转换过程中,使用了两个循环,一个用于将源进制转换为目标进制,另一个用于将剩余的余数转换为目标进制。最后,使用 `memmove()` 函数来删除前导零。