pojg上面第2734,2735是关于8和10机制互转的。
我刚开始用stack方法;
#include<stdio.h> #include<stdlib.h> #include<memory.h> #include<string.h> class Stack { public: char a[16]; int i; Stack() { i=0; } void push(char c) { a[i++]=c; } bool isEmpty() { return i==0; } int pop() { if(isEmpty()) return -1; return a[--i]; } }; //十进制转8进制 int main() { Stack s; int n; scanf("%d",&n); while(n) { s.push(n%8); n=n/8; } while(!s.isEmpty()) { printf("%d",s.pop()); } printf(" "); }
前面已经写过任意进制到十进制转换:
long b2ten(char *x,int b) { int ret=0; int len=strlen(x); for(int i=0;i<len;i++) { if(x[i]-'0'>=b) return -1; ret*=b; ret+=x[i]-'0'; } return (long)ret; }
转:
m进制转换为n进制-
这种题也是一道经典的面试题,主要考察进制转换细想,Coding质量等。
当我们把十进制转成二进制的时候,我们通过辗转相除,取余,逆置余数序列的过程得到新的进制的数。因此我们可以借助这种思想把M进制转成N进制的数。
如下是C的详细的实现方法
void m2n(int m, char* mNum, int n, char* nNum) { int i = 0; char c, *p = nNum; //这是一个考察地方,是否能用最少乘法次数。 while (*mNum != '