c语言n进制转换为m进制
时间: 2024-05-02 10:18:23 浏览: 92
以下是将n进制转换为m进制的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
// 将n进制数转换为10进制数
int toDecimal(char *num, int base) {
int decimal = 0;
int len = strlen(num);
for (int i = 0; i < len; i++) {
int digit;
if (num[i] >= '0' && num[i] <= '9') {
digit = num[i] - '0';
} else if (num[i] >= 'a' && num[i] <= 'z') {
digit = num[i] - 'a' + 10;
} else if (num[i] >= 'A' && num[i] <= 'Z') {
digit = num[i] - 'A' + 10;
} else {
return -1; // 不支持的字符
}
if (digit >= base) {
return -1; // 不符合n进制
}
decimal = decimal * base + digit;
}
return decimal;
}
// 将10进制数转换为m进制数
void toBase(int decimal, int base, char *result) {
int index = 0;
while (decimal > 0) {
int remainder = decimal % base;
if (remainder < 10) {
result[index] = remainder + '0';
} else {
result[index] = remainder - 10 + 'a';
}
decimal /= base;
index++;
}
result[index] = '\0';
// 翻转字符串
int len = strlen(result);
for (int i = 0; i < len / 2; i++) {
char temp = result[i];
result[i] = result[len - i - 1];
result[len - i - 1] = temp;
}
}
int main() {
char num[100];
int n, m;
printf("请输入n进制数:");
scanf("%s", num);
printf("请输入n进制:");
scanf("%d", &n);
printf("请输入m进制:");
scanf("%d", &m);
int decimal = toDecimal(num, n);
if (decimal == -1) {
printf("不符合n进制\n");
return 0;
}
char result[100];
toBase(decimal, m, result);
printf("转换后的m进制数为:%s\n", result);
return 0;
}
```
使用方法:
1. 运行程序后,输入需要转换的n进制数,例如:`10101`
2. 输入n进制,例如:`2`
3. 输入m进制,例如:`8`
4. 程序将输出转换后的m进制数,例如:`25`
阅读全文