C语言编程输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数后输出。【样例输入】+A 【样例输出】Hex=10
时间: 2024-02-18 19:04:02 浏览: 66
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
5星 · 资源好评率100%
以下是一个简单的 C 语言程序,实现了上述功能:
```c
#include <stdio.h>
#include <ctype.h> // 包含 isxdigit 函数的头文件
int main() {
char str[81], hex_str[81];
int i, j, hex_num = 0;
// 读入字符串
printf("请输入一个字符串:\n");
fgets(str, 81, stdin);
// 过滤非十六进制字符
for (i = 0, j = 0; str[i] != '\0' && str[i] != '\n'; i++) {
if (isxdigit(str[i])) {
hex_str[j] = str[i];
j++;
}
}
hex_str[j] = '\0'; // 补上字符串结束符
// 转换为十进制数
for (i = 0; hex_str[i] != '\0'; i++) {
hex_num *= 16;
if (isdigit(hex_str[i])) {
hex_num += hex_str[i] - '0';
} else {
hex_num += toupper(hex_str[i]) - 'A' + 10;
}
}
// 输出结果
printf("Hex=%d\n", hex_num);
return 0;
}
```
程序中使用了 `fgets` 函数读入字符串,可以避免 `scanf` 函数的一些问题。`isxdigit` 函数用来判断一个字符是否为十六进制字符,如果是则将其加入到新的字符串 `hex_str` 中。转换为十进制数时,需要根据字符的 ASCII 码值进行转换,其中数字字符 `'0'` 到 `'9'` 对应的值为 0 到 9,字母字符 `'A'` 到 `'F'` 对应的值为 10 到 15。
阅读全文