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

     1 #include<stdio.h>
     2 
     3 int is_hex(char ch);            //判断是否是十六进制字符,是返回1
     4 int hex_to_dec(char ch);        //十六进制字符转换位十进制数
     5 int main(void)
     6 {
     7     char a[80], b[80];
     8 
     9     int i = 0;
    10     while ((a[i] = getchar()) != '#')
    11     {
    12         i++;
    13     }
    14         
    15     int j = 0;
    16     int count = 0;                //十六进制字符的个数
    17     int first_hex = -1;            //第一个十六进制字符的下标            
    18     for (i = 0; a[i] != '#'; i++)
    19     {
    20         if (is_hex(a[i]))
    21         {
    22             count++;
    23             if (count == 1)
    24             {
    25                 first_hex = i;
    26             }
    27             b[j] = a[i];
    28             j++;
    29         }
    30     }
    31 
    32     int flag = 1;                //等于-1时,表示负数
    33     for (i = 0; i < first_hex; i++)
    34     {
    35         if (a[i] == '-')
    36         {
    37             flag = -1;
    38         }
    39     }
    40 
    41     int num = 0;
    42     for (i = 0; i < j; i++)
    43     {
    44         num = num * 16 + hex_to_dec(b[i]);
    45     }
    46 
    47     num = flag * num;
    48     printf("%d", num);
    49 
    50     return 0;
    51 }
    52 int is_hex(char ch)
    53 {
    54     int ret = 0;
    55     if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f'))
    56     {
    57         ret = 1;
    58     }
    59 
    60     return ret;
    61 }
    62 int hex_to_dec(char ch)
    63 {
    64     int ret = 0;
    65     if (ch >= '0' && ch <= '9')
    66     {
    67         ret = ch - '0';
    68     }
    69     else if (ch >= 'A' && ch <= 'F')
    70     {
    71         ret = 10 + ch - 'A';
    72     }
    73     else if (ch >= 'a' && ch <= 'f')
    74     {
    75         ret = 10 + ch - 'a';
    76     }
    77 
    78     return ret;
    79 }
  • 相关阅读:
    Linux进阶之Linux中的标准输入输出
    PermCheck
    FrogRiverOne
    PermMissingElem
    FrogJmp
    TapeEquilibrium
    恒生电子长沙2016实习生笔试题
    接口和抽象类的异同点?
    C#实现二叉树
    C#实现栈和队列
  • 原文地址:https://www.cnblogs.com/2018jason/p/12011184.html
Copyright © 2011-2022 走看看