这是在今年的cvte笔试题中做过的一个题目,是将任意的M进制数转换为N进制数。具体代码如下:
#include<stdio.h>
void m2n(int m, char* mNum, int n, char* nNum)
{
int i = 0;
char c, *p = nNum;
//这是一个考察地方,是否能用最少乘法次数。
while (*mNum != '\0')
i = i*m + *mNum++ - '0';
//辗转取余
while (i) {
*p++ = i % n + '0';
i /= n;
}
*p-- = '\0';
//逆置余数序列
while (p > nNum) {
c = *p;
*p-- = *nNum;
*nNum++ = c;
}
}
int main()
{
int m=0,n=0;
char arr1[100];
char arr2[100];
gets(arr1);
m2n(10,arr1,2,arr2);
puts(arr2);
system("pause");
return 0;
}
以下是我运行的结果图:
但是上述代码也存在一定的缺陷就是没有对数制进行检查。