将十进制转换为十六进制值

时间:2010-12-31 08:53:00

标签: c

我编写的C代码从十进制转换为十六进制,但是我编译它只显示十六进制值10到15,表示A到F.请参阅下面的代码。

main()
{
    int n,r[10],i,d=0,e=1;
    printf("Enter the decimal number\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        r[i]=n%16;
        n=n/16;
        d=d+(r[i]*e);
        e=e*10;
    }
    i--;
    for(i=n;i>=0;i--)
    {
        if(r[i]==10)
            printf("A");
        else if(r[i]==11)
            printf("B");
        else if(r[i]==12)
            printf("C");
        else if(r[i]==13)
            printf("D");
        else if(r[i]==14)
            printf("E");
        else if(r[i]==15)
            printf("F");
        else
            printf("hexa decimal value %d\n",d);
    }
}

3 个答案:

答案 0 :(得分:2)

#include <stdio.h>

int main(void) {
  int n;

  if (scanf("%d", &n) == 1) {
    printf("hexadecimal: %x\n", n);
  }
  return 0;
}

答案 1 :(得分:0)

请格式化代码。

也许这是一个功课,但如果你只对转换感兴趣,那就这样做。

int decNum;
scanf("%d",&decNum);
print("%x\n",decNum);

答案 2 :(得分:0)

C语言中将十进制转换为十六进制

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
    long int n,n1,rem;
    char *ans="\0",*ch;
    clrscr();
    printf("\nEnter Your Decimal No :: ");
    scanf("%ld",&n);

    n1=n;
    while(n>0)
    {
        rem=n%16;
        ch=NULL;
        sprintf(ch,"%s",((rem==10)?"A":(rem==11)?"B":(rem==12)?"C":(rem==13)?"D":(rem==14)?"E":(rem==15)?"F":"Z"));
        if(strcmp(ch,"Z")==0)
            sprintf(ch,"%ld",rem);
        strcat(ans,ch);
        n=n/16;
    }

    printf("\nYour Decimal No is :: %ld",n1);
    printf("\nConvert into Hexadecimal No is :: %s",strrev(ans));
    printf("\n\n\n\tThank You");
    getch();
}