【牛客刷题】

发布时间 2023-12-01 09:48:31作者: FBshark

scanf读入16进制数

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
 
数据范围:保证结果在

我的解法:

void HexToDec(void)
{
    uint32_t result = 0;
    scanf("%x", &result);
    printf("%d", result);
}

scanf("%x",&n);就可以接收16进制数据。输入时可以写前导符0x也可以不写。

网友的解法:

int num=0;
while(scanf("%i\n",&num)!=-1)
{
    printf("%d\n",num);
}

在scanf格式中,%d 只与十进制形式的整数相匹配。而%i 则可以匹配八进制、十进制、十六进制表示的整数。· 如果输入的数字有前缀 0(018、025),%i将会把它当作八进制数来处理,如果有前缀0x (0x54),它将以十六进制来处理。