PTA 7-7 字符串转换成十进制整数

7-7 字符串转换成十进制整数(15 分)

输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

输入格式:

输入在一行中给出一个以#结束的非空字符串。

输出格式:

在一行中输出转换后的十进制数。题目保证输出在长整型范围内。

输入样例:

+-P-xf4+-1!#

输出样例:

-3905
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int i,j,sum,k,len,flag=1;
    char a[1000];
    int w[1000];
    sum = 0;
    j=0;
    k = 0;
    gets(a);
    len = strlen(a);
    for(i=0;i<len;i++)
    {
        if(a[i]>='0'&&a[i]<='9')
        {
            w[j] = a[i] - '0';
            j++;
        }
       else if(a[i]>='A'&&a[i]<='F')
        {
             w[j] = a[i] - 'A' + 10;
             j++;
        }
       else  if(a[i]>='a'&&a[i]<='f')
       {
            w[j] = a[i] - 'a' + 10;
            j++;
       }
       if(a[i]=='-'&& j == 0)
       {
           flag = -1;
       }
    }
    for(i = j - 1;i>=0;i--)
    {
        //printf("%d\n",a[i]);
        sum += w[i]*pow(16,k);
        k++;
    }
    if(sum == 0)
    {
        printf("0");
    }
    else{
        sum = flag*sum;
        printf("%d",sum);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/gaiya2050/article/details/81151851