代码一:
#include <stdio.h>
#include <math.h>
#include <string.h>
void convert(char a[]) //十六进制 转 十进制
{
int i,t;
long sum=0;
for(i=0;a[i];i )
{
if(a[i]>='0'&&a[i]<='9')
// num =(a[i]-'0')*pow(16,n-1-i);
t=a[i]-'0';
else if(a[i]>='A'&&a[i]<='F')
// num =(10 (a[i]-'A'))*pow(16,n-1-i);
t=a[i]-'A' 10;
else if(a[i]>='a'&&a[i]<='f')
// num =(10 (a[i]-'A'))*pow(16,n-1-i);
t=a[i]-'a' 10;
sum=sum*16 t;
}
printf("转换十进制为:");
printf("%d",sum);
}
int main( )
{
char a[10];
void convert(char a[]);
printf("请输入十六进制数:");
gets(a); //输入十六进制数数组
convert(a); //转换数组
return 0;
}
代码二:
#include<stdio.h>
#define N 50
long fun(char *s)
{
int i,t; //t记录临时加的数
long sum =0;
for(i=0;s[i];i )
{
if(s[i]>='0'&&s[i]<='9')
t=s[i]-'0'; //当字符是0~9时保持原数不变
if(s[i]>='a'&&s[i]<='z')
t=s[i]-'a' 10;
if(s[i]>='A'&&s[i]<='Z')
t=s[i]-'A' 10;
sum=sum*16 t;
}
return sum;
}
int main()
{
int m;
char s[N]; //字符串与字符数组相结合的方式
printf("Enter 16进制数:");
scanf("%s",s); //注意此处%s
m=fun(s);
printf("%d",m);
}