天天看點

pta 7-1 字元串轉換成十進制整數 (15 分)

輸入一個以#結束的字元串,本題要求濾去所有的非十六進制字元(不分大小寫),組成一個新的表示十六進制數字的字元串,然後将其轉換為十進制數後輸出。如果在第一個十六進制字元之前存在字元“-”,則代表該數是負數。

輸入格式:

輸入在一行中給出一個以#結束的非空字元串。

輸出格式:

在一行中輸出轉換後的十進制數。題目保證輸出在長整型範圍内。

輸入樣例:

±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;
}