int main() {
int s1[N], t, m, n, i, u, p, q;
char s2[N] = { 0 };
p = q = u = t = m = n = i = 0;
printf("输入一个十进制数m,和要转换的进制n,格式为:m-n(10<n<17)\n");
scanf("%d-%d", &m, &n);
int a = m, b = n; //输出时候用的,作用不大
if (10 < n && n<17)
{
if (m > n || m == n){ // 初始时候m>=n ,除留余数
for (i = 1; m > n || m == n; i++){
s1[i] = m%n;
m = m / n;
}
s1[i] = m; //结束循环,此时的m<n,放进数组
}
else
{
i = 1; //初始时候m<n 直接放进数组
s1[i] = m;
}
change(s1, s2, i); //调用函数把int数组逆置为char
printf("%d 转%d 进制的结果是:%s",a, b,s2);
}
else
printf("输入错误!\n");
}
void change(int s1[], char s2[], int i){
int j = 0;
while (i > 0){
if (9 < s1[i]){
s1[i] += 55;
s2[j++] = (s1[i--]); // 数字65-70转字符
}
else
{
s2[j++] = '0'+s1[i--]; // 数字0-9,转字符要加‘0’,因为0的ASCII值为 48
}
}
s2[j] = '\0';
}