输入一个以#结束的字符串,滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,输出该字符串并将其转换为十进制数后输出。
输入格式:
输入在一行中给出一个不超过80个字符长度的、以#结束的非空字符串。
输出格式:
第1行中输出已滤去所有非十六进制字符的字符串。 在第2行中输出转换后的十进制数。题目保证输出结果在长整型范围内。
输入样例:
-zy1+Ak0-bq?#
结尾无空行
输出样例:
1A0b
6667
结尾无空行
#include <stdio.h>
int main(){
char a;
int sum = 0,flag = 0;
char b;
scanf("%c",&a);
while (a != '#'){
flag = 0;
b = 0;
if (a >= '0'&&a <= '9'){
b = b + a;
flag = 1;
sum = sum * 16 + a - '0';
}else if(a >= 'a'&&a <= 'f'){
b = b + a;
flag = 1;
sum = sum * 16 + a - 'a' + 10;
}else if(a >= 'A'&&a <= 'F'){
b = b + a;
flag = 1;
sum = sum * 16 + a - 'A' + 10;
}
if (flag == 1){
printf ("%c",b);
}
scanf ("%c",&a);
}
printf ("\n");
if (sum == 0){
printf ("0");
}else{
printf ("%d",sum);
}
return 0;
}