输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串,然后将新字符串转换为十进制整数输出。用c语言
时间: 2024-03-31 14:37:05 浏览: 107
C语言实现字符串转十进制算法
好的,以下是用 C 语言实现这个程序的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[81];
printf("请输入一个字符串(少于80个字符)并回车:\n");
fgets(str, 81, stdin); // 读入一个以回车结束的字符串
int len = strlen(str);
char hex_str[81];
int hex_count = 0;
for (int i = 0; i < len; i++) {
if ((str[i] >= '0' && str[i] <= '9')
|| (str[i] >= 'a' && str[i] <= 'f')
|| (str[i] >= 'A' && str[i] <= 'F')) { // 判断是否为十六进制字符
hex_str[hex_count++] = str[i]; // 将十六进制字符加入新字符串
}
}
hex_str[hex_count] = '\0'; // 新字符串结尾加上'\0'
int num = 0;
len = strlen(hex_str);
for (int i = 0; i < len; i++) {
if (hex_str[i] >= 'a' && hex_str[i] <= 'f') {
num = num * 16 + hex_str[i] - 'a' + 10; // 将小写字母 a~f 转换为数字
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') {
num = num * 16 + hex_str[i] - 'A' + 10; // 将大写字母 A~F 转换为数字
} else {
num = num * 16 + hex_str[i] - '0'; // 将数字 0~9 转换为数字
}
}
printf("转换后的十进制整数为:%d\n", num);
return 0;
}
```
以上代码中,我们使用了循环和条件语句来对输入的字符串进行处理。首先,我们定义了一个新字符串 `hex_str`,用于存储过滤后的十六进制字符。然后,我们遍历输入的字符串,判断每个字符是否为十六进制字符,并将其加入新字符串中。接着,我们将新字符串中的字符转换为十进制整数,最终输出结果。
阅读全文