c语言写一个函数,输入一个十六进制数,输出相应的十进制数

2024-11-12 17:36:44
推荐回答(5个)
回答(1):

/*按要求,输入输出都在子函数中进行*/
#include
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();
}

回答(2):

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


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

#include
#include
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       {
        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);
}

回答(3):

int
main()
{
char
a[32];
printf("输入一个十六进制:\n");
scanf("%s",a);
printf("相应的10进制是:%s\n",trans(a));
}
//朋友说下,你那个进制转换函数,要么输出十进制数的每一位,要么返回十进制啊

回答(4):

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位,可以自己以这种形式编一个循环

回答(5):

#include
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
请按任意键继续. . .