用c语言编写程序。输入一个以$结束的字符串,要求过滤所有的非十六进制字符(不区分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
时间: 2025-01-30 13:11:40 AIGC 浏览: 48
以下是一个C语言程序,它实现了一个简单的功能,即读取用户输入的字符串,过滤掉非十六进制字符并转换成十进制数:
```c
#include <stdio.h>
#include <ctype.h> // 包含ctype.h库以使用isxdigit函数
// 主函数
int main() {
char input[100]; // 存储输入字符串
fgets(input, sizeof(input), stdin); // 从标准输入读取字符串到input数组,直到遇到换行符或达到长度限制
if (input[strlen(input)-1] == '$') { // 检查字符串结尾是否有$
input[strlen(input)-1] = '\0'; // 去除结尾的$
bool is_negative = false;
if (input[0] == '-') { // 判断是否为负数
is_negative = true;
input++; // 移动指针到第二个字符
}
long decimal_num = 0; // 初始化十进制数
for (int i = 0; input[i]; ++i) { // 遍历输入字符串
if (isxdigit(input[i])) { // 如果是十六进制字符
decimal_num = decimal_num * 16 + (tolower(input[i]) - '0'); // 转换为小写并加到十进制数上
}
}
if (is_negative) {
decimal_num = -decimal_num; // 如果是负数,取反
}
printf("Decimal number: %ld\n", decimal_num); // 输出十进制数
} else {
printf("Invalid input format. Please enter a string ending with $.\n");
}
return 0;
}
```
阅读全文
相关推荐














