进制

it2022-05-09  36

 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

 

转载于:https://www.cnblogs.com/97-5-1/p/7414148.html


最新回复(0)