c语言代码输入三个正整数n,m,x,其中n,m分别为2,8,10,16中的其中一个数,且互不相同,x为待转换的数值,编程实现将x从n进制转换为m进制。
时间: 2024-02-11 10:05:46 浏览: 86
好的,下面是一个简单的 C 语言程序,可以将任意进制的数转换为另一种进制的数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int convertToDecimal(char *num, int base) {
int len = strlen(num);
int power = 1;
int decimal = 0;
for (int i = len - 1; i >= 0; i--) {
int digit = 0;
if (num[i] >= '0' && num[i] <= '9')
digit = num[i] - '0';
else if (num[i] >= 'A' && num[i] <= 'F')
digit = num[i] - 'A' + 10;
decimal += digit * power;
power *= base;
}
return decimal;
}
void convertToNewBase(int decimal, int base) {
char newNum[1000];
int i = 0;
while (decimal > 0) {
int rem = decimal % base;
if (rem < 10)
newNum[i] = rem + '0';
else
newNum[i] = rem + 'A' - 10;
decimal /= base;
i++;
}
printf("转换后的数为:");
for (int j = i - 1; j >= 0; j--)
printf("%c", newNum[j]);
}
int main() {
int n, m;
char num[1000];
printf("请输入待转换的数值:");
scanf("%s", num);
printf("请输入原进制(n):");
scanf("%d", &n);
printf("请输入新进制(m):");
scanf("%d", &m);
int decimal = convertToDecimal(num, n);
convertToNewBase(decimal, m);
printf("\n");
return 0;
}
```
在这个程序中,我们首先定义了两个函数:`convertToDecimal` 和 `convertToNewBase`,分别用于将一个任意进制的数转换成十进制数和将一个十进制数转换成任意进制的数。在 `main` 函数中,我们首先从用户那里获取一个待转换的数值,以及原进制和新进制,然后调用 `convertToDecimal` 函数将该数值转换成十进制数,并保存在 `decimal` 变量中,最后调用 `convertToNewBase` 函数将 `decimal` 转换成新进制的数,并将结果打印到屏幕上。
阅读全文