栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言 字符串转整型

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言 字符串转整型

1、题目要求

写一个函数,将字符串转换为整型数,转换规则参考库函数atoi,但不允许使用atoi。

2、效果如下:

输入:abc123                输出:0

输入:123abc                输出:123

输入:-123abc               输出:-123

输入:abc-123               输出:0

输入:+123abc              输出:123

输入:abc+123              输出:0

3、实现

首先判断首元素,如果首元素不是0-9或‘+’或‘-’,则返回0。

if(!(str[0] >= '0' && str[0] <= '9' || str[0] == '-' || str[0] == '+')) {
    	return 0;
	}

否则如果首元素是0-9的话则依次判断数组后面元素是否为0-9,不是则直接跳出循环并返回目标值(target)

代码如下:

    else if(str[0] >= '0' && str[0] <= '9') {
    	target = target*10 + str[0] - 48;
    	for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 + str[i] - 48;
	        }
	        else {
        		break;
        	}
   		}   	
	}

否则如果首元素是‘-’的话则依次判断数组后面元素是否为0-9,不是则直接跳出循环并返回目标值(target)

代码如下:

else if(str[0] == '-') {
		for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 - str[i] + 48;
	        }
	        else {
        		break;
        	}
	    }
	}

否则如果首元素是‘+’的话则依次判断数组后面元素是否为0-9,不是则直接跳出循环并返回目标值(target)

代码如下:

else {
		for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 + str[i] - 48;
	        }
	        else {
        		break;
        	}
		}
	}

全部代码如下:

#include 
int my_atoi(char *str);
int main() {
	char str[32] = {0};
    printf("Please input a string:n");
    while(1) {
	scanf("%s",str);
    printf("%dnn", my_atoi(str));
	}
	return 0;
} 
int my_atoi(char *str) {    
    int target = 0,i;
    if(!(str[0] >= '0' && str[0] <= '9' || str[0] == '-' || str[0] == '+')) {
    	return 0;
	}
    else if(str[0] >= '0' && str[0] <= '9') {
    	target = target*10 + str[0] - 48;
    	for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 + str[i] - 48;
	        }
	        else {
        		break;
        	}
   		}   	
	}
	else if(str[0] == '-') {
		for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 - str[i] + 48;
	        }
	        else {
        		break;
        	}
	    }
	}
	else {
		for (i = 1; str[i] != ''; i++) {
	        if ((str[i] >= '0' && str[i] <= '9')) {
	        	target = target*10 + str[i] - 48;
	        }
	        else {
        		break;
        	}
		}
	}
    return target;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957778.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号