zoukankan      html  css  js  c++  java
  • 【编程题目】输入一个表示整数的字符串,把该字符串转换成整数并输出

    第 20 题(字符串):
    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。
    例如输入字符串"345",则输出整数 345。

    /*
    第 20 题(字符串):
    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。
    例如输入字符串"345",则输出整数 345。
    start time = 8:40
    end time = 8: 47
    correct time = 9:46
    */
    
    
    //最开始什么正负号 什么输入包含不是数字的字符 还有什么数字溢出通通都没考虑 看了人家的答案才知道... 参考后修改成了现在的代码
    
    #include <stdio.h>
    #include <string.h>
    
    int myatoi(char * in)
    {
        int ans = 0;
        for(int i = 0; in[i] != ''; i++)
        {
            if(in[i] - '0' >= 0 && in[i] - '0' <= 9)
            {
                ans = ans * 10 + in[i] - '0';
            }
            else if(!(i == 0 && (in[i] == '+' || in[i] == '-')))  //除了第一个字符可以是 + -号 其他位置其他符号不应出现
            {
                printf("error! input isn't a num!");
                return 0;
            }
        }
        if(in[0] == '-')  //判断是否为负数
        {
            ans = 0 - ans;
        }
    
        //检查是否越界
        char check[100];
        if(in[0] == '+')  //如果输入的第一个符号是正号 加入到check中 正数自己不会有+号
        {
            check[0] = '+';
            sprintf(check + 1, "%d", ans);
        }
        else
        {
            sprintf(check, "%d", ans);
        }
        if(strcmp(check, in) != 0) //比较得到的数字转换成的字符串 与 输入字符串是否有差别 有差别就是溢出了
        {
            printf("overflow!");
            return 0;
        }
    
        return ans;
    }
    
    
    int main()
    {
        char * cnum = "-124563567";
        int num = myatoi(cnum);
        return 0;
    }
  • 相关阅读:
    python 开启多进程的两种方法
    Python
    Python
    路由器配置
    python 自定义报头 实现大文件传输
    python socket
    Spring MVC 实现文件的上传
    SpringMVC异常处理
    SpringMVC 返回值类型,参数传递 解决乱码
    Spring—MVC案例
  • 原文地址:https://www.cnblogs.com/dplearning/p/3893786.html
Copyright © 2011-2022 走看看