
c语言写一个函数,输入一个十六进制数,输出相应的十进制数
/*写一个函数,输入一个十六进制数,输出相应的十进制数*/#include<stdio.h>intmain(){intshiliu(inta);inta,b;printf...
/*写一个函数,输入一个十六进制数,输出相应的十进制数*/
#include<stdio.h>
int main()
{ int shiliu(int a);
int a,b;
printf("please input a 16 figure\n");
scanf("%x",&a);
b=shiliu(int (a));
printf("%d\n",b);
return 0;
}
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')n=n*16+x-'0';
if(x>='a'&&x<='f')n=n*16+x-'a'+10;
if(x>='A'&&x<='F')n=n*16+x-'A'+10;
return (n);
} 展开
#include<stdio.h>
int main()
{ int shiliu(int a);
int a,b;
printf("please input a 16 figure\n");
scanf("%x",&a);
b=shiliu(int (a));
printf("%d\n",b);
return 0;
}
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')n=n*16+x-'0';
if(x>='a'&&x<='f')n=n*16+x-'a'+10;
if(x>='A'&&x<='F')n=n*16+x-'A'+10;
return (n);
} 展开
6个回答
展开全部
不用转换直接输出就可以了
int main()
{
int a;
printf("please input a 16 figure\n");
scanf("%x",&a);
printf("%d\n",a);
return 0;
}
int main()
{
int a;
printf("please input a 16 figure\n");
scanf("%x",&a);
printf("%d\n",a);
return 0;
}
追问
不行,题目要求写一个函数
追答
那可以用字符串
int str2int (char *hex)
{
int dec = 0;
while (*hex) {
dec <<= 4;
if (*hex >= '0' && *hex <= '9') { // 0~9
dec |= *hex - '0';
} else if (*hex >= 'a' && *hex <= 'f') { //a~f
dec |= 0xa + *hex - 'a';
} else if (*hex >= 'A' && *hex <= 'F') { //A~F
dec |= 0xa + *hex - 'A';
} else { //异常字符
dec = 0;
break;
}
hex++;
}
return (dec);
}
int main()
{
char hex[16];
int a;
printf("please input a 16 figure\n");
scanf("%s",hex);a=str2int(hex);
printf("%d\n",a);return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询