输入样例:
+--P-xf4+-1!#
输出样例:
-3905
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char s[81];
cin.getline(s, 80);
int i = 0;
int pt = 0;
for (i; i < (int)strlen(s)-1; i++) //过滤掉最前面的正负号
{
if (s[i] == '+')
{
continue;
}
else if (s[i] == '-')
{
s[0] = s[i];
pt = 1;
}
else break;
}
for (i; i < (int)strlen(s)-1; i++) //把符合的字符在字符串前面依次放置
{
if ((s[i] >= 'a'&&s[i] <= 'f') || (s[i] >= 'A'&&s[i] <= 'F') || (s[i] >= '0'&&s[i] <= '9'))
{
s[pt] = s[i];
pt++;
}
}
s[pt] = '\0'; //在处理好的字符串后面加入'\0'变成新的字符串
cout << s << endl;
int sum = 0;
for (int j = 0; j < (int)strlen(s); j++) //16进制转换成10进制
{
if (s[j] == '-')
{
cout << s[j];
continue;
}
if (s[j] >= '0'&&s[j] <= '9')
sum = sum * 16 + (s[j] - '0');
else if(s[j]>='A'&&s[j]<='F')
sum = sum * 16 + 10 + (s[j] - 'A');
else
sum = sum * 16 + 10 + (s[j] - 'a');
}
cout << sum << endl;
return 0;
}
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负
最新推荐文章于 2022-05-27 19:36:02 发布