C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。

2024-11-08 09:19:44
推荐回答(4个)
回答(1):

#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]<'0'||(str[i]>'9'&&str[i]<'A')||(str[i]>'F'&&str[i]<'a')||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;
}

回答(2):

main()
{int a;
scanf("%p",&a);
printf("%d",a);
}
%p是输入一个十六进制的数
%d是输出一个十进制的数

回答(3):

#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]<'0'||(str[i]>'9'&&str[i]<'A')||(str[i]>'F'&&str[i]<'a')||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;
}

回答(4):

c语言函数库查一下strtol()函数,在stdlib.h里,不用你来写