輸入一個以#結束的字元串,本題要求濾去所有的非十六進制字元(不分大小寫),組成一個新的表示十六進制數字的字元串,然後将其轉換為十進制數後輸出。如果在第一個十六進制字元之前存在字元“-”,則代表該數是負數。
輸入格式:
輸入在一行中給出一個以#結束的非空字元串。
輸出格式:
在一行中輸出轉換後的十進制數。題目保證輸出在長整型範圍内。
輸入樣例:
±P-xf4±1!#
輸出樣例:
-3905
#include<stdio.h>
int main()
{
char a;
int flag=1,mark=1,sum=0;
while(scanf("%c",&a),a!='#')
{
if(a>='0'&&a<='9')
{
flag=0;
sum=sum*16+a-'0';
}
else if(a>='a'&&a<='f')
{
flag=0;
sum=sum*16+a-'a'+10;
}
else if(a>='A'&&a<='F')
{
flag=0;
sum=sum*16+a-'A'+10;
}
else if(a=='-'&&flag==1) mark=0;
}
if(sum==0) printf("0");
else
{
if(mark==0) printf("-");
printf("%d\n",sum);
}
return 0;
}