C语言编程,请使用数组输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新的字符串(十六进制形式),然后将其转换为十进制数后输出。【样例输入】+A 【样例输出】Hex=10
时间: 2024-02-18 14:04:07 浏览: 60
编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。(要求:十六进制允许的字符是从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 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` 函数时,实参应该是数组名加上数组长度减一(因为 `fgets` 函数会读入换行符)。
阅读全文