十六进制转化为十进制的程序
#include<stdio.h>#include<string.h>
#include<math.h>
long convert(char str[])
{
int i,n;
n=strlen(str);
int a[81];
long b=0;
for (i=0;i<n;i++)
{
if(str[i]>=48&&str[i]<=57)
a[i]=str[i]-48;
else if(str[i]>=65&&str[i]<=70)
a[i]=str[i]-55;
else if(str[i]>=97&&str[i]<=102)
a[i]=str[i]-87;
else printf("data error!\n");
b+=a[i]*pow(16,n-1-i);
}
return b;
}
void main()
{
int flag=1;
char s[81];
while(flag==1)
{
printf("input a hexnumber :");
gets(s);
printf("out put a decimal number:%ld\n",convert(s));
printf("if you want to continue input 1:");
scanf("%d",&flag);
}
}
这是我写的一个把一个十六进制转化为十进制的程序,为什么执行了一次这后就不行了。而且结果还比较怪,希望哪位大师指点一下,还有有什么不好和地方还需要改正直说啊!我是诚心学习的!!