用C语言编写一个函数实现十六进制数至十进制数的转换.在主函数中输入十六进制数,输出相应的十进制数。

谢谢!
2024-11-12 11:28:13
推荐回答(4个)
回答1:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void HEX_DEC(int num,int N){

if(num>N-1){

HEX_DEC(num/N,N);

}

printf("%d",num%N);

}

void main(){

int num;

printf("输入一个十六进制的数\n");

scanf("%x",&num);

printf("直接用%%d输出:%d\n",num);

printf("用函数输出:");

HEX_DEC(num,10);//转换成几进制就把第二个参数换成几

printf("\n");

system("pause");

}

运行结果:

扩展资料:

scanf用法:

输出的值只是空格前面的字符是因为scanf函数的输入格式错误,输入参数的变量前需要加&。

scanf("%s",s);改为scanf("%s",&s);

scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);

格式控制字符串包含:格式控制说明,普通字符。

1、格式控制字符串表示输入的格式,(int型用%d,float用%f,double型用%lf)

2、普通字符:在输出数据的时候,按照原样输出的字符,如:"fahr=%d,celsius=%d\n"中的fahr=,celsius=。

3、输入的参数是变量的地址,所以要在变量前面加&。

回答2:

#include
#include
#include
int main()
{
 void tran(int);
 int x;
 printf("请输入一个十六进制数:");
 for(;;printf("输入不正确,请输入一个十六进制数:"))
 {
  if(scanf("%x",&x))
   break;
  fflush(stdin);
 }
 tran(x);
 getch();
 return 0;
}
void tran(int x)
{
 int i,s[10]={0};
 for(i=0;x;i++)
 {
  s[i]=x%10;
  x/=10;
 }
 for(i--;i>=0;i--)
  printf("%d",s[i]);
 printf("\n");
}


祝你成功!

回答3:

#include
#include
main()
{
    char s[32];
    scanf("%s", s);
    int len = strlen(s), ans = 0, i;
    for(i = 0; i < len; i++)
    {
        int index;
        if(s[i] >= 'a' && s[i] <= 'f')
            index = s[i] - 'a' + 10;
        else if(s[i] >= 'A' && s[i] <= 'F')
            index = s[i] - 'A' + 10;
        else index = s[i] - '0';
        ans +=  (int)(index * pow(16.0, len - 1 - i));
    }
    printf("%d\n", ans);
}

回答4:

#include "stdio.h"
void main(){
int x;
scanf("%x",&x);

printf("%d\n",x);
}