任意数制间的转换

这是在今年的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;
}

以下是我运行的结果图:
这里写图片描述
但是上述代码也存在一定的缺陷就是没有对数制进行检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值