文章
2
粉丝
0
获赞
2
访问
249
解答:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
while(cin >> s){ //注意题目中的一个测试用例中的可能存在多种数据,用
//while(cin >> s)或while(scanf("%s",s) != EOF)(char类型的数组)进行循环输入即可
int end = 0;
for(int i = 2; i < s.size(); i++){
end *= 16;//类似于1A = 1*16^1 + A*16^0;二进制同样如此(1000 = 8 = 1*2^3 + 0*2^2 + 0*2^1 + 0*2^0),
//记住公式即可。A转B则需要每次承A的权值。
char j = s[i];
if(j <= '9' && j >= '0') end = end + (j - '0');//注意ASCII码值的转换
else if(j >= 'A' && j <= 'F') end = end + (j - 'A') + 10;//一定要注意加10
else end = end + (j - 'a') + 10;
}
cout << end << endl;
}
return 0;
}
关于string类型的扩展
1.头文件
#include<string>
2.string类型的变量可以像char类型的数组一样进行下标的访问,也可以用“+”进行拼接。
string str = "Hello";
// 使用下标访问字符
char ch1 = str[0]; // 'H'
char ch2 = str.at(1); // 'e' (推荐使用at(),因为它会检查边界)
// 修改字符
str[0] = 'h'; // 字符串变为 "hello"
cout << str << en...
登录后发布评论
暂无评论,来抢沙发