首页 > 试题广场 >

十六进制转十进制

[编程题]十六进制转十进制
  • 热度指数:87308 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

BoBo写了一个十六进制整数ABCDEF,他问KiKi对应的十进制整数是多少。


输入描述:


输出描述:
十六进制整数ABCDEF对应的十进制整数,所占域宽为15。

备注:
printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。
#include <stdio.h>

int main()
{
    printf("%15d",0XABCDEF);

    return 0;

}

发表于 2024-08-03 16:41:54 回复(0)
#include <stdio.h>
#include <string.h>
//构造函数,保证通用性
//在函数里稍微修改就可以让任意进制互相转换
void conversion(char str[])
{
    //判断输入是否是正确的数
    //int len =strlen(num)的方***把非16进制位记录在内
    int i = 0, j = 0, num = 1, sum = 0, len = 0;
    while ((str[i] >= 'a' && str[i] <= 'f') || (str[i] >= '0' && str[i] <= '9') || (str[i] >= 'A' && str[i] <= 'F'))
    {
        len++;  //记录字符串的长度
        i++;    //访问每一个字符
    }
    i = 0;//初始化,后面才能访问每个字符
    while (str[i] != '\0') //'\0'字符串的结束标志
    {
        //字符转为数字
        if (str[i] >= '0' && str[i] <= '9')
            num = str[i] - 48;  //'0'的acsll值为48
        else if (str[i] <= 'a' && str[i] <= 'f')
            num = str[i] - 97+10;   //'a'的acsll值为97,十六进制里a为10
        else if (str[i] <= 'A' && str[i] >= 'F')
            num = str[i] - 65+10;
        else
            break;      //换完之后就跳出循环
       
        //如果第一位为a,则num10
        //j<len - 1,在算第一位时就直接输出num,如果是j<=len-1会多乘16
        for (j = 0; j < len - 1; j++)
        {
            num *= 16;  //
        }
        sum += num;
        i++;
        len--;  //读取一位就减一
    }
    printf("%d", sum);
}

int main()
{
   char str[20] ="ABCDEF";
   //scanf("%s", &str);
   conversion(str);
   return 0;
}
编辑于 2024-03-20 17:53:56 回复(1)
#include <stdio.h>

int main()
{
	int a = 0xABCDEF;

	printf("%15d\n", a);

	return 0;
}

编辑于 2024-02-23 11:54:33 回复(0)
#include <stdio.h>

int main() {
    char a[]="ABCDEF";
    int i;
    int d,c;
    d=0;
    for (i=0;a[i]!='\0';i++)
    {
        char b=a[i];
        if (b>='0' && b<='9')
        {
            c=b-'0';
        }
        else if(b>='A' && b<='F')
        {
            c=b-'A'+10;
        }
        d=d*16+c;
    }
    printf("%15d",d);  
}

发表于 2023-10-24 23:54:45 回复(0)
#include <stdio.h>

int main() {
    int a;
    scanf("%x",&a);
    printf("%d",a);
}为啥不这样?
发表于 2023-08-24 23:28:34 回复(4)
#include <stdio.h>

int main() {
  printf("%15d",0xABCDEF);

    return 0;
}
发表于 2023-07-22 14:35:35 回复(0)

#include <stdio.h>
#include <stdlib.h>

int main() {
    char hex[] = "ABCDEF";
    int decimal;

    decimal = strtol(hex, NULL, 16);

    printf("%15d\n", decimal);

    return 0;
}
发表于 2023-07-08 18:25:37 回复(0)
#include <stdio.h>
int main(){
    printf("%15d",0xABCDEF);
    return 0;
}

发表于 2023-06-15 17:37:52 回复(0)
#include <stdio.h>

int main() {
   
    int i = 0xABCDEF;
    printf("%15d", i);

    return 0;
}
发表于 2023-02-18 17:22:49 回复(0)
#include <stdio.h>

int main() {
    printf("%15d\n",0xABCDEF);
    return 0;
}

发表于 2023-01-27 16:58:33 回复(0)
#include <stdio.h>

int main()
{
    printf("%15d\n", 0xABCDEF);

    return 0;
}

发表于 2023-01-25 16:54:27 回复(0)
#include<stdio.h>
int main() 
{
    int c=0xABCDEF;
    printf("%15d",c);
    return 0;
}

发表于 2022-07-28 20:13:42 回复(0)
#include <stdio.h>
#include <math.h>
int main()
{    
    int i=0,len,sum=0;
    char s[80];
    gets(s);
    for(i=0;s[i]!='\0';i++)
    ;
    len=i;
    for(i=0;i<len;i++){
        if(s[i]=='A'){
            sum+=10*pow(16,(len-i-1));
        }
        if(s[i]=='B'){
            sum+=11*pow(16,(len-i-1));
        }
        if(s[i]=='C'){
            sum+=12*pow(16,(len-i-1));
        }
        if(s[i]=='D'){
            sum+=13*pow(16,(len-i-1));
        }
        if(s[i]=='E'){
            sum+=14*pow(16,(len-i-1));
        }
        if(s[i]=='F'){
            sum+=15*pow(16,(len-i-1));
        }
        if(s[i]>='0'&&s[i]<='9'){
            sum+=(s[i]-'0')*pow(16,(len-i-1));
        }
    }
    printf("%15d",sum);
    return 0;
}
//我是蒻鸡,是我想复杂了
发表于 2022-05-12 00:38:29 回复(1)
#include<stdio.h>
#include<math.h>
int main()
{
    char ch[] = "ABCDEF";
    int i = 0, num = 0,j=0;
    for (i = 5; i >= 0; i--)
    {
        int tem = 0;
        tem = ((ch[i] - 'A') + 10) * (int)pow(16, j);
        num += tem;
        j++;
    }
    printf("%15d", num);
    return 0;
}

发表于 2022-04-20 20:33:55 回复(0)
#include<stdio.h>
int main(){
    int a=0XABCDEF;
    printf("%15d",a);
    return 0;
}
发表于 2022-03-14 21:40:27 回复(0)
%与d之间的数字表示的是输出数据所占的宽度,由系统决定,通常按照数据本身的实际宽度数出,前后不加空格,并且采用右对齐的形式,在%和格式字符之间插入一个整型常数来指定输出的宽度n。
# include <stdio.h>

int main(void)
{
    int a = 0XABCDEF;
    printf("%15d\n",a);
    return 0;
}

发表于 2022-03-02 16:01:20 回复(0)
#include<stdio.h>
int main(void){
    printf("%15d\n", 0XABCDEF);
    
    return 0;
}
题解:1.注意十六进制的写法,建议十六进制的字母采用大写   2.理解%d中间的15的意思    15的意思是整个数据的字段宽15,不足的左边补空格
发表于 2022-01-27 03:58:05 回复(0)
#include<stdio.h>
int main()
{
    char s[]="ABCDEF";
    int sum=0;
    char *p;
    for(p=s;*p!='\0';p++)
    {
        sum=sum*16+*p-'A'+10;
    }printf("%15d",sum);
}
发表于 2021-12-23 21:12:57 回复(0)