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);
}
哪里有问题? 展开
2个回答
展开全部
#include <stdio.h>
long hex2dec(char *p)
{
long x=0;
for(;*p;p++)
{
if(*p>='0'&&*p<='9')x=x*16+*p-'0';
else if(*p>='A'&&*p<='F')x=x*16+*p-'A'+10;
else if(*p>='a'&&*p<='f')x=x*16+*p-'A'+10;
else
{
printf("Data error!\n");
return -1;
}
}
return x;
}
int main()
{
char s[20];
scanf("%s",s);
printf("%sH=%ldD\n",s,hex2dec(s));
system("pause");
return 0;
}
展开全部
#include<stdio.h>
int main()
{ int shiliu(char *x);
char a[100];
int b;
printf("please input a 16 figure\n");
gets(a);
b=shiliu(a);
printf("%d\n",b);
return 0;
}
int shiliu(char *x)
{
int n=0;
while(*x != '\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;
x++;
}
return (n);
}
输入的时候作为整形输入,处理的时候作为字符型处理,是矛盾的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询