满意答案
chengexin
2013.05.27
采纳率:59% 等级:11
已帮助:10599人
#include
#include
#include
#define N 1000
char str[N];
int a[N],b[N];
int main(void)
{
void zsh();
long ycl();
int i,n;
do{
printf("请输入一个十六进制数:\n");
scanf("%s",str);
for(i=0,n=0;str[i]!='\0';i++)
if(str[i]'9'&&str[i]'F'&&str[i]'f')
{
n=1;
printf("输入不符和要求\n");
break;
}
}while(n);
zsh();
printf("转换成十进制后的结果为%ld\n",ycl());
getch();
}
void zsh()
{
int i,j;
j=strlen(str)-1;
b[j]=1;
for(i=j;i>0;i--)
b[i-1]=b[i]*16;
}
long ycl()
{
long x,i,j;
j=strlen(str)-1;
for(x=0,i=j;i>=0;i--)
{
if(str[i]>='a'&&str[i]<='z')
a[i]=str[i]-'a'+10;
else if(str[i]>='A'&&str[i]<='Z')
a[i]=str[i]-'A'+10;
else
a[i]=str[i]-'0';
x=x+a[i]*b[i];
}
return x;
}
06分享举报