16进制   0x 123  ->  0001  0010   0011

                %x   输出16进制整型数字

8 进制    0 123 ->     001  010  011

 

1、将输入的数字转化为2~32进制

void  Change(char *str)//字符串逆置
{
 char tmp = 0;//临时变量
 char *p = str;//保存首地址
 while(*p != '\0')
  p++;//此时走到尾部
 p--;
 for(;str<p;str++,p--)
 {
  tmp = *str;
  *str = *p;
  *p = tmp;
 }
}


void Myitoa(int n,char *str,int radix)//进制转换
{
 char des[] = "0123456789abcdefghijklmnopqrstuvwsyz";//下标与表示字符一 一对应。查表
 int i = 0;
 do
 {
  str[i++] = des[n%radix];
  n /= radix;
 }while(n>0);
 str[i] = '\0';
 Change(str);
}


int main()
{
 int n = 10;
 int m = 13455;
 char str[40];
 Myitoa(m,str,32);
 printf("%s\n",str);
}

 

2、假设在n进制下,下面的等式成立,567*456=150216,n的值为(18)

       A 、9       B、10       C、12     D、 18

    (5*n^2+6*n+7)*(4*n^2+5^n+6)= 20*n^4+49*n^3+88*n^2+71*n+42 = n^5+5*n^4+2*n^2+n+6

    第一种:直接对两边取余,得到     42%n=6%n=1   。若第一种判断不出则使用第二种。

    第二种 : 先两边除n ,在对n取余。 (71+42/n)%n = (1+6/n)%n=1