代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
int top = -1;//栈的初始化-代表空栈
void push(char *a, char elem) {//入栈
a[++top] = elem;
}
void pop(char *a) {
if (top == -1) {
return;
}
if (a[top] >= 10) {
printf("%c", a[top] + 55);
}
else
{
printf("%d", a[top]);
}
top--;
}
//将各进制数转化成十进制数
int scanfFun(char *data, int system) {
int k = (int)strlen(data) - 1;
int system_10_data = 0;
int i;
for (i = k; i > 0; i++) {
int temp;
if (data[i] > 48 && data[i] <= 57) {
temp = data[i] - 48;
}
else
{
temp = data[i] - 55;
}
system_10_data += temp * pow(system, k - i);
}
return system_10_data;
}
int main() {
char data[100];//定义了一个数组100长度
printf("进制转化器,请输入原数据的进制(2-36):");
int system;
scanf("%d", &system);
getchar();
printf("请输入要转化的数据:");
scanf("%s", data);
getchar();
int system_10_data = scanfFun(data, system);
printf("请输入转化后的数据进制:");
int newSystem;
scanf("%d", newSystem);
getchar();
while (system_10_data / newSystem) {
push(data, system_10_data%newSystem);
system_10_data /= newSystem;
}
push(data, system_10_data%newSystem);
printf("转换后的结果为:\n");
while (top != -1) {
pop(data);
}
}
结果:
有点问题