• 数组-08. 字符串转换成十进制整数


    数组-08. 字符串转换成十进制整数(15)

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    张彤彧(浙江大学)

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

    输入格式:

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

    输出格式:

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

    输入样例:
    +P-xf4+-1!#
    
    输出样例:
    -3905
     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 int main()
     6 {
     7     int i, j = 0, flag = 1, sum = 0;
     8     char str[100], s[20];
     9     gets(str);
    10     for(i = 0; str[i] != '#'; i++)
    11     {
    12         if(str[i] == '-' && flag)
    13             s[j++] = str[i];
    14         if((str[i] >= '0' && str[i] <= '9') || (str[i]) >= 'a' && str[i] <= 'f' || (str[i] >= 'A' && str[i] <= 'F'))
    15         {
    16             s[j++] = str[i];
    17             flag = 0;
    18         }
    19     }
    20     if(s[0] != '-')
    21         for(i = j - 1; i >= 0; i--)
    22         {
    23             if(s[i] >= '0' && s[i] <= '9')
    24                 sum += (s[i] - '0') * pow(16, j - 1 - i);
    25             else if(s[i] >= 'a' && s[i] <= 'f')
    26                 sum += (s[i] - 'a' + 10) * pow(16, j - 1 - i);
    27             else if(s[i] >= 'A' && s[i] <= 'F')
    28                 sum += (s[i] - 'A' + 10) * pow(16, j - 1 - i);
    29         }
    30     else
    31     {
    32         for(i = j - 1; i > 0; i--)
    33         {
    34             if(s[i] >= '0' && s[i] <= '9')
    35                 sum += (s[i] - '0') * pow(16, j - 1 - i);
    36             else if(s[i] >= 'a' && s[i] <= 'f')
    37                 sum += (s[i] - 'a' + 10) * pow(16, j - 1 - i);
    38             else if(s[i] >= 'A' && s[i] <= 'F')
    39                 sum += (s[i] - 'A' + 10) * pow(16, j - 1 - i);
    40         }
    41         sum = -sum;
    42     }
    43     printf("%d
    ", sum);
    44     return 0;
    45 }
  • 相关阅读:
    循环取出正则匹配的内容(遍历).
    遍历datatable的方法
    asp.net获取URL和IP地址
    匹配多个字符串方法
    世界杯决赛不好看,有点像假球,被裁判黑了?
    2010南非世界杯冠军预测:荷兰夺冠!
    查了几家人民广场附近的川菜和湘菜馆
    白平衡(转载自wikipedia)
    梦想与感动
    港澳旅游相关备忘
  • 原文地址:https://www.cnblogs.com/yomman/p/4237733.html
Copyright © 2020-2023  润新知