#include<bits/stdc++.h>
using namespace std;
char str[555];
long long zhuan10(char a[], int r) {//转成10进制
long long len, i, num;
long long sum = 0;
len = strlen(a);
for (i = 0; i < len; i++) {
if (a[i] >= '0' && a[i] <= '9')
num = a[i] - '0';
else {
if(isupper(a[i]))
num = a[i]-'A'+10;
else
num = a[i] - 'a' + 10;
}
sum = sum * r + num;
}
return sum;
}
void zhuande(long long n, int r) {//转成需要的进制
int k=0,d;
while(n!=0) {
d=n%r;
str[k++]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"[d];//默认大写
n/=r;
}
str[k]='\0';
for(int i=0; i<k/2; i++)
swap(str[i],str[k-1-i]);
}
int main() {
system("color 6");
while(1) {
int B, b;
char a[500];
printf("请输入此数当前的进制 2-36:");
scanf("%d", &B);
printf("请输入需要转换的数:");
getchar();
gets(a);
long long m = zhuan10(a, B); //将输入的数字转换成十进制数
printf("你想转换成多少进制 2-36 :");
scanf("%d", &b);
printf("%d进制数%s转换为%d进制数的结果为:",B,a,b);
zhuande(m, b);
puts(str);
}
return 0;
}
任意进制转换
最新推荐文章于 2021-03-20 21:42:24 发布