C++实现x进制转y进制(y<=16)
时间: 2024-05-11 16:18:34 浏览: 88
以下是C语言实现x进制转y进制的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 将字符转成数字
int charToInt(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
return -1;
}
}
// 将数字转成字符
char intToChar(int num) {
if (num >= 0 && num <= 9) {
return num + '0';
} else if (num >= 10 && num <= 15) {
return num - 10 + 'a';
} else {
return '\0';
}
}
// 将x进制数转成10进制数
int xToDecimal(char *num, int x) {
int len = strlen(num);
int decimal = 0;
for (int i = 0; i < len; i++) {
int digit = charToInt(num[i]);
if (digit >= x) {
printf("Error: digit %c is out of range for base %d\n", num[i], x);
exit(1);
}
decimal = decimal * x + digit;
}
return decimal;
}
// 将10进制数转成y进制数
void decimalToY(int decimal, int y) {
char result[100];
int i = 0;
while (decimal > 0) {
int remainder = decimal % y;
result[i++] = intToChar(remainder);
decimal /= y;
}
printf("The result is: ");
for (int j = i - 1; j >= 0; j--) {
printf("%c", result[j]);
}
printf("\n");
}
int main() {
char num[100];
int x, y;
printf("Please enter the number you want to convert: ");
scanf("%s", num);
printf("Please enter the base of the number: ");
scanf("%d", &x);
printf("Please enter the base you want to convert to: ");
scanf("%d", &y);
int decimal = xToDecimal(num, x);
decimalToY(decimal, y);
return 0;
}
```
代码中使用了两个函数:`xToDecimal` 和 `decimalToY`。`xToDecimal` 函数将 x 进制数转成 10 进制数,`decimalToY` 函数将 10 进制数转成 y 进制数。在 `main` 函数中,先输入需要转换的数、原进制和目标进制,然后调用 `xToDecimal` 函数将数转成 10 进制数,最后调用 `decimalToY` 函数将 10 进制数转成 y 进制数。
阅读全文