scanf自带16进制数输入转换 : %x
#include <stdio.h>
int main() {
int i;
while(~scanf("%x", &i)) printf("%d\n", i);
return 0;
}
再来一波正解吧
边试边写的, 题目 / 样例 中对 : 字母的大小写
是否有负号
没有说明 / 体现
不仅是水题, 而且是烂题
//
// Created by trudbot on 2022/8/2.
//
#include <bits/stdc++.h>
using namespace std;
int parse(char ch) {
if(ch >= 'A' && ch <= 'F') return ch - 'A' + 10;
if(ch >= 'a' && ch <= 'f') return ch - 'a' + 10;
return ch - '0';
}
int translate(string x) {
int l = 0, r = x.size()-1, ans = 0, sign = 1;
if(x[0] == '-') sign = -1, l = 3;//有负号, 从第四个字符开始
else l = 2;//从第三个字符开始
while(l <= r) {
ans = 16 * ans + parse(x[l++]);
}
return sign * ans;
}
int main() {
string x;
while(cin >> x) {
cout << translate(x) << endl;
}
return 0;
}
互赞
%%%
#!!!
# Orz Orz Orz
好家伙,代码都短的卷成这样#
库函数用法大赏😃%%%
# Orz Orz