weixin_45857043
weixin_45857043
2019-12-27 15:39
采纳率: 47.6%
浏览 706

设计一个函数int stoi(char* str),将数字字符串str转换为一个整数。 main读取一个由数字字符构成的字符串放入数组,然后调用stoi函数得到转换后的整数并输出.

【问题描述】

设计一个函数int stoi(char* str),将数字字符串str转换为一个整数。

main读取一个由数字字符构成的字符串放入数组,然后调用stoi函数得到转换后的整数并输出。

【输入形式】

一个由数字字符构成的字符串

【输出形式】

一个整数

【样例输入】

4321

【样例输出】

4321

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • qtchen_1988
    qtchen_1988 2019-12-27 16:24
    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    int atoi(char *str)
    {
        int i,len = strlen(str);
        if(len == 0)
            return 0;
        int flag = 1;
        int sum = 0;
        if(str[0] == '-')
            flag = -1;
        for(i=0;i<len;i++)
        {
            if(str[i]>='0' && str[i]<='9')
            {
                sum = sum*10 + str[i] - '0';
            }
            else{
                if(i != 0)
                    return 0;
            }
        }
        return flag*sum;
    }
    
    int main()
    {
        char arr[20];
        memset(arr,0x0,20);
        gets(arr);
        printf("%d\n",atoi(arr));
        return 0;
    }
    
    
    点赞 评论
  • qq_25048473
    铲灰 2019-12-27 16:25

    #include

    ///没有判断正负号
    int stoi(char* str)
    {
    if (str == NULL)
    {
    printf("str == NULL\n");
    return 0;
    }

    int flag = 0;
    int value = 0;
    while(*str != '\0')
    {
        value *= 10;
        ///判断该字符是否是数字,如果不是数字,就退出循环
        if (*str >= '0' && *str <= '9')
        {
            value += *str - '0';///减去字符0
        }
        else
        {
            flag = -1;
            break;
        }
        ++str;
    }
    
    if (flag != 0)
    {
        printf("input str error\n");
        return 0;
    }
    
    return value;
    

    }

    int main()
    {
    char buf[10] = "4321";
    int value = stoi(buf);
    printf("value = %d\n", value);

    char buf1[20] = {"12345789"};
    value = stoi(buf1);
    printf("value = %d\n", value);
    
    char buf2[20] = {"1234d3d3"};
    value = stoi(buf2);
    printf("value = %d\n", value);
    
    return 0;
    

    }

    点赞 评论
  • weixin_39442613
    MRHPT 2019-12-27 17:19
    C库函数strtol也可以实现你要的功能,自己写的话需要判断是否为非法字符,还有是否超过int取值范围
    
    点赞 评论

相关推荐