[开心IT面试题] 字符串转换整数

题目:

输入一个表示整数的字符串,把该字符串转换成整数并输出。

例如输入字符串"345",则输出整数345。

 

思路:

先判断该字符串是有符号正整数,还是有符号负整数,还是无符号正整数。

再遍历一遍字符串,与‘0’和‘9’比较得出结果。

 

代码:

bool StringToInt(char *str, long long *integer)
{
    if(str == NULL)
    {
        return false;
    }

    //计算字符串长度
    int len = strlen(str);
    int tempInteger = 0;

    //先对第一位字符进行判断是正整数还是负整数
    if(str[0] == '+')//正整数
    {
        //有符号正整数,从第2个字符开始遍历字符串
        for(int i = 1; i < len; i++)
        {
            if(str[i] >= '0' && str[i] <= '9')
            {
                tempInteger += (str[i]-'0')*pow(10., (len-1-i));
            }else
            {
                break;
            }
        }
        *integer = tempInteger;
    }else if(str[0] == '-')//负整数
    {
        //有符号负整数,从第2个字符开始遍历字符串,最后将所得值乘以-1
        for(int i = 1; i < len; i++)
        {
            if(str[i] >= '0' && str[i] <= '9')
            {
                tempInteger += (str[i]-'0')*pow(10., (len-1-i));
            }else
            {
                break;
            }
        }
        *integer = tempInteger*(-1);
    }else if(str[0] >= '0' && str[0] <= '9')//正整数
    {
        //无符号正整数,从第1个字符开始遍历字符串
        for(int i = 0; i < len; i++)
        {
            if(str[i] >= '0' && str[i] <= '9')
            {
                tempInteger += (str[i]-'0')*pow(10., (len-1-i));
            }else
            {
                break;
            }
        }
        *integer = tempInteger;
    }

    return true;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值