输入描述:
输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。
输出描述:
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
示例1
输入
复制
0xA
0xAA
输出
复制
10
170
这个是看到的别人的写法,短小精悍又好用
#include <iostream>
int main(){
int a;
while ((cin >> hex >> a)){
cout << a << endl;}
}
return 0;
}
下面是我自己的写法,模拟进制转换,想着说这个地方的话可能还会有其他的坑,比如大小写啊啥的,但是很幸运这道题没有,直接转换就可以过
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
char str[1005];
char a[16]={'A','B','C','D','4'};
while(scanf("%s",str)!=EOF){
int i=2,sum=0;
int len=strlen(str);
while(str[i]!=0){
if(str[i]>='0'&&str[i]<='9'){
sum+=(str[i]-'0')pow(16,len-i-1);
}else if(str[i]>='A'&&str[i]<='Z'){
sum+=(str[i]-'A'+10)pow(16,len-i-1);
}
i++;
}
printf("%d\n",sum);
}
}</iostream>