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);
}
展开
 我来答
江伟77
2012-07-24 · TA获得超过591个赞
知道小有建树答主
回答量:230
采纳率:100%
帮助的人:209万
展开全部
/*按要求,输入输出都在子函数中进行*/
#include <stdio.h>
void fun(void)
{
int a=0,i;
char str[6];
printf("输入十六进制数:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
a=a*16+str[i]-48;
else
if(str[i]>='a'&&str[i]<='z')
a=a*16+str[i]-'a'+10;
else
a=a*16+str[i]-'A'+10;
printf("对应的十进制数为:%d\n",a);
}

int main(void)
{
fun();
getchar();
}
蓉雪球
2015-06-05 · TA获得超过8998个赞
知道大有可为答主
回答量:2846
采纳率:79%
帮助的人:718万
展开全部

反问你一个问题:如果你输入的是int型,那么怎么会有字符型的出来呢?


可以参考一下别人写的代码:

#include<stdio.h>
#include<string.h>
void main()
{
       char array[100];
       void fun(char*);
       gets(array);
       fun(array);
}

void fun(char array[100])
{
       int sum=0,i;
       for(i=0;i<strlen(array);i++)
       {
        sum*=16;
              if('0'<=array[i]&&array[i]<='9')
   sum+=array[i]-'0';
              if('a'<=array[i]&&array[i]<='z')
   sum+=array[i]-'a'+10;
              if('A'<=array[i]&&array[i]<='Z')
   sum+=array[i]-'A'+10;
       }
 printf("%d",sum);
}
追问
我改成void了还是不行,能不能指点一下(逃~
追答
#include<stdio.h>
int shiliu(int x)
{
int n=0;
if(x>='0'&&x<='9')       
n=n*16+x-'0'; 
else if(x>='a'&&x<='f')       
n=n*16+x-'a'+10;
else if(x>='A'&&x<='F')
n=n*16+x-'A'+10;
return (n);
}
int main()
{  
    int b;
char a;
printf("please input a 16 figure\n");
scanf("%c",&a);
b=shiliu((int)a);
printf("%d\n",b);
return 0;
}

这是拿你的程序改的(因为纯手打,所以我就懒得多写一句声明了,于是就把两个函数换了一下位子)

(额……你改追问啦……不是VOID的问题,我只是想提醒你一下你原来的程序没有检测十六进制里面10到15的那些个字母的问题)

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淦秀荣义雁
2019-11-25 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:2109万
展开全部
int
main()
{
char
a[32];
printf("输入一个十六进制:\n");
scanf("%s",a);
printf("相应的10进制是:%s\n",trans(a));
}
//朋友说下,你那个进制转换函数,要么输出十进制数的每一位,要么返回十进制啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaisa_linno
2012-07-23
知道答主
回答量:15
采纳率:0%
帮助的人:6.2万
展开全部
int lox_16,lox_10;
cin>>hex>>lox_16; //c中用(scanf())输入的是4位16进制数

//将16进制数转换为10进制数 注意lox_16已经为16进制数
lox_10=lox_16/1000*pow(10,3)+lox_16/100%10*pow(10,2)+lox_16%100/10*pow(10,1)+lox_16%10*pow(10,0); //lox_16 是4位的,不是4位,可以自己以这种形式编一个循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
raymond989898
2012-08-03
知道答主
回答量:11
采纳率:0%
帮助的人:4.2万
展开全部
#include <stdio.h>
void main( void )
{
int i;
printf( "\n\nEnter an HEX number :\n");
scanf( "%x", &i );
printf( "The decimal number is: %d \n", i);
}

运行结果:

Enter an HEX number :

0xffff
The decimal number is: 65535
请按任意键继续. . .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式