字符串转换成十进制整数。输入一个以字符"#"结束的字符串,滤去所有的非十六进制字符(不分太小写),组成一个新的表示十六进制数字的字存串,然后将其转换为十进制数后输出。如果过滤后字符串的首字符为"-"代表该数是负数。试编写相应程序。
时间: 2024-03-10 10:50:12 浏览: 90
好的,这是一个很典型的字符串处理题目,我可以给您提供一份C++的实现代码,您可以参考一下:
```c++
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 100010;
char str[N];
int get_num(char c) // 将十六进制字符转化为数字
{
if(c >= '0' && c <= '9') return c - '0';
else if(c >= 'a' && c <= 'f') return c - 'a' + 10;
else if(c >= 'A' && c <= 'F') return c - 'A' + 10;
else return -1; // 不是十六进制字符
}
int main()
{
cin >> str;
int len = strlen(str);
bool is_neg = false;
if(str[0] == '-') is_neg = true;
int st = is_neg ? 1 : 0;
long long res = 0;
for(int i = st; i < len; i ++)
{
int num = get_num(str[i]);
if(num != -1) res = res * 16 + num;
}
if(is_neg) res = -res;
cout << res << endl;
return 0;
}
```
这个代码的思路是:首先判断输入字符串是否为负数,然后从字符串的第一个字符开始遍历,将其中的十六进制字符转化为数字,然后将这些数字连起来组成一个十六进制数,最后将这个十六进制数转化为十进制数输出。
阅读全文
相关推荐














