C语言编程输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数后输出。【样例输入】+A 【样例输出】Hex=10
时间: 2024-02-18 16:04:03 浏览: 63
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从0~9和a~f或A~F)
5星 · 资源好评率100%
这道题目已经被其他用户提问过了,我来提供一个 C 语言的代码实现供您参考。
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[81], hex_str[81];
int hex = 0, i, j;
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];
}
}
hex_str[j] = '\0';
for (i = 0; hex_str[i] != '\0'; i++) {
if (isdigit(hex_str[i])) {
hex = hex * 16 + hex_str[i] - '0';
} else {
hex = hex * 16 + toupper(hex_str[i]) - 'A' + 10;
}
}
printf("Hex=%d\n", hex);
return 0;
}
```
程序中使用 `fgets` 函数读取输入字符串,可以避免使用 `scanf` 函数时的缓冲区问题。同时利用 `isxdigit` 函数,过滤掉非十六进制字符。在转换过程中,需要注意区分数字字符和字母字符,以及大小写字母的不同 ASCII 码值,这里使用了 `toupper` 函数将字符串中的小写字母转换为大写字母。
阅读全文