这个程序仅仅是由十进制转换为其他进制的过程,其转换的规则如下图所示。

我使用的思路:首先在除基的过程中用一个数组保存余数,然后在输出进制转换结果的时候倒序输出,并且在输出前判断余数是否大于10,如果大于10则要转化为字母。


 

/*
【问题描述】输入一个十进制整数,将其转换成N进制数(1<N<=16)
【输入形式】一个十进制数 整数N
【输出形式】数字或字母由 (0-9,A,B,C,D,E,F)
【样例输入】300 16
【样例输出】12C
【样例输入】100 2
【样例输出】1100100
*/
#include <stdio.h>
#include <stdlib.h>

void change(int n,int m)
{
    int a,str[100],i;
    for (i=0;n!=0;i++)
    {
        str[i]=n%m;
        n=n/m;
    }
    for (;i>0;i--)
    {
       switch (str[i-1])
            {
                case 10:printf("A");break;
                case 11:printf("B");break;
                case 12:printf("C");break;
                case 13:printf("D");break;
                case 14:printf("E");break;
                case 15:printf("F");break;
                default:printf("%d",str[i-1]);break;
            }
    }
}
int main()
{
    int m,n,str[100];
    while ((scanf("%d%d",&n,&m)!=EOF))
        change(n,m);
    return 0;
}