第2个回答 2011-03-06
16进制转化为10进制
(16进制数不能超过10位)
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{
void GiveInstructions();
long ChangeHtoD(int n,char x[]);
int i,j,k;
long d;
char x[20];
clrscr();
GiveInstructions();
printf("Please Input an H number: ");
gets(x);
j=strlen(x)-1;
d=ChangeHtoD(j,x);
printf("\nThe result is: %ld\n",d);
printf("\n*********\nPress any key to quit.");
getchar();
}
void GiveInstructions()
{
printf("\n***********************************\n");
printf("\n\nThis programme gets an H number \nfrom user and changes it to D number.\n\n");
printf("\n\nNOTSE: The H number can not be more than 10-digit.\n\n");
printf("\n***********************************\n");
}
long ChangeHtoD(int n,char x[])
{
int i,j;
long r=0;
j=n;
for (i=0;i<=j;i++,n--)
{
if (x[i]>=48&&x[i]<=57) x[i]=x[i]-48;
if (x[i]>=65&&x[i]<=70) x[i]=x[i]-55;
if (x[i]>=97&x[i]<=102) x[i]=x[i]-87;
r=r+x[i]*pow(16,n);
}
return(r);
}
我也是在网上搜的,希望对你有帮助!