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