第1个回答 2019-09-15
我以前编的不知道是不适合你
#include
"stdio.h"
#include
"string.h"
void
main()
{
while(1){
int
ox(char
x[100]);
char
x[100];
scanf("%s",x);
printf("%d\n",ox(x));
}
}
int
ox(char
x[100])
{
void
turn(char
x[100],int
a,int
z[100]);
int
a,b,d,e,i;
int
z[100]={0};
a=strlen(x);
turn(x,a,z);
for(b=0,i=0;i<=a-1;i++){
for(d=1,e=1;d<=a-i-1;d++)
e*=16;
b+=z[i]*e;
}
return(b);
}
void
turn(char
x[100],int
a,int
z[100])
{
char
y[17]={"0123456789abcdef"};
int
i,b,c=0;
for(i=0;i<=a-1;i++){
for(b=0;b<=15;b++){
if(x[i]==y[b]){
z[c]=b;
c++;
break;
}
}
}
}
你输入的是0到F都是字符型的,输出的是对应的10进制数
第2个回答 2010-04-26
我以前编的不知道是不适合你
#include "stdio.h"
#include "string.h"
void main()
{
while(1){
int ox(char x[100]);
char x[100];
scanf("%s",x);
printf("%d\n",ox(x));
}
}
int ox(char x[100])
{
void turn(char x[100],int a,int z[100]);
int a,b,d,e,i;
int z[100]={0};
a=strlen(x);
turn(x,a,z);
for(b=0,i=0;i<=a-1;i++){
for(d=1,e=1;d<=a-i-1;d++)
e*=16;
b+=z[i]*e;
}
return(b);
}
void turn(char x[100],int a,int z[100])
{
char y[17]={"0123456789abcdef"};
int i,b,c=0;
for(i=0;i<=a-1;i++){
for(b=0;b<=15;b++){
if(x[i]==y[b]){
z[c]=b;
c++;
break;
}
}
}
}
你输入的是0到F都是字符型的,输出的是对应的10进制数本回答被提问者采纳