c语言接受一个十六进制的数值字符串,输出该数值的十进制字符串
时间: 2023-05-08 19:55:43 浏览: 162
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
5星 · 资源好评率100%
首先,需要把十六进制的字符串转化为十进制的数值。这可以通过将字符串中的每个字符转化为对应的数值,然后将这些数值乘以16的幂次方相加得到。例如,十六进制字符串"1A"转化为十进制数值时,计算方式为 1×16^1 + 10×16^0 = 26。
对于如何输出十进制字符串,可以使用sprintf函数将十进制数值转化为字符串,并输出到一个字符数组中。
下面是代码示例:
```
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char hex_str[100];
int dec_num = 0;
// 接收十六进制字符串
printf("请输入一个十六进制数值:");
scanf("%s", hex_str);
// 转化为十进制数值
int length = strlen(hex_str);
for (int i = 0; i < length; i++) {
char c = hex_str[i];
int n;
if (c >= '0' && c <= '9') {
n = c - '0';
} else if (c >= 'A' && c <= 'F') {
n = c - 'A' + 10;
} else if (c >= 'a' && c <= 'f') {
n = c - 'a' + 10;
} else {
printf("输入不合法!\n");
return -1;
}
dec_num += n * pow(16, length - i - 1);
}
// 输出十进制字符串
char dec_str[100];
sprintf(dec_str, "%d", dec_num);
printf("十进制数值为:%s\n", dec_str);
return 0;
}
```
阅读全文