zoukankan      html  css  js  c++  java
  • 习题7-8 字符串转换成十进制整数 (15分)

    题目描述

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

    输入格式:

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

    输出格式:

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

    输入样例:

    +-P-xf4+-1!#

    输出样例:

    -3905

    #include <stdio.h>
    
    int main(void)
    {
        char ch;
        ch=getchar();
        int sign=1,sum=0,flag=0;//sign为符号,sum=为数值,flag为是否出现了有效的十六进制数
        while(ch!='#')
        {
        if(ch>='0'&&ch<='9')
                {
                    sum=sum*16+(ch-'0');
                    flag=1;
                }
            else if(ch>='a'&&ch<='f')
                {
                    sum=sum*16+(ch-'a'+10);
                    flag=1;
                }
            else if(ch>='A'&&ch<='F')//注意这题大小写是不分的
                {
                    sum=sum*16+(ch-'A'+10);
                    flag=1;
                }
            else if(ch=='-'&&flag==0) sign=-1;//有无负号
            ch=getchar();
        }
            printf("%d",sign*sum);
        return 0;
    }
  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/NTyee/p/12710952.html
Copyright © 2011-2022 走看看