十六进制到十进制转换
2018-04-18 本文已影响0人
Auuuuu_
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )/* 什么叫多组同时输入 */
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子1:
0xA
输出例子1:
10
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define OK (0)
#define ERROR (-1)
int main(void)
{
char str[200] = {0}; /* 大小可控? */
while(scanf("%s", &str))
{
int len = strlen(str);
int i;
int num = 0;
if(str[0] != '0' || str[1] != 'x')
{
printf("\r\nEnter error.\r\n");
return ERROR;
}
for(i = 2; str[i]; i++)
{
if(str[i] >= '0' && str[i] <= '9')
num = num*16 + str[i] - '0';
else if(str[i] >= 'A' && str[i] <= 'E')
num = num*16 + 10 + str[i] - 'A';
else
return ERROR;
}
printf("%d\r\n", num);
}
return OK;
}