C语言编程:n进制数转十进制数 (急!!!)

来源:百度知道 编辑:UC知道 时间:2024/05/28 03:00:46
写一个函数,输入一个n进制数m,输出相应的十进制数。
例如:当n=5,m=3204时,则调用该函数输出429.因为(3*53+2*52+0*51+4*50=429).
当n=2,m=10100时,则调用该函数输出20.
int n2dec (int n, int m)
{… }

intint n2dec (int n, int m)
{ int dec=i=j=0,ni=1,t; /*dec为十进制数,ni为n的i次方。*/
while(m!=0)
{ t=m%10; /*求最右一位*/
m/=10; /*右移一位*/
for(i=j;i>0;i--)ni*=n; /*求ni*/
dec+=t*ni;
j++;
}
return dec;
}

int n2dec( int n, int m )
{
int temp = m;
int count = 0;
int power = 1;
int result = 0;

while (temp!=0)
{
temp /= 10;
count++;
}

for (; count > 1; count--)
{
power *= 10;
}

while (power!=0)
{
result = result * n + m / power;
m %= power;
power /= 10;
}

return result;
}

这个函数的参数m是int型,所以还无法接受16进制的字母数字如af等。其他的都还可以。
当然,你不能在6进制里给函数一个带有数字6的参数,那样得到的结果没有意义。类似这样的异常处理你到main函数里做吧。

用循环除n取余就是了

就像你用求二进制是循环除2取余