任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的C程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
#include "stdio.h"
#include "math.h"
#include"string.h"
int zhh(char a[32],int n)
{int i,j;
long c=0;
j=strlen(a);//測(cè)試字符串的總長(zhǎng)度
for(i=j-1,j=0;i>=0;i--,j++)
c=c+(long)((a[i]-'0')*pow(n,j));//十進(jìn)制10=二進(jìn)制1010,即1*2^3+1*2^1
//pow(n,j)為n^j
return c;
}
int main()
{ char a[32];
int base;
long c;
char *p=a;
printf("input data and jinzhi:n ");
scanf("%s",p);
scanf("%d",&base);
c=zhh(p, base);
printf("the changed: %ld",c);
return 0;
}
代碼說明:1、關(guān)于a[i]-'0',這是一個(gè)相對(duì)值。因?yàn)閍[i]t和‘0’均為字符,字符‘0’ASCII中值為48,其它數(shù)字字符依次增加1。所以千萬(wàn)不能去掉字符0兩邊的‘’。
2、數(shù)組中a[0],a[1],a[2]...a[j-1],左邊的數(shù)參與計(jì)算的冪次高,如十進(jìn)制10等于二進(jìn)制1010,即1*2^3+1*2^1,所以用“for(i=j-1,j=0;i>=0;i--,j++)...”。
3、在Visual C++ 6.0中,可以插入斷點(diǎn)調(diào)試。