C语言 精选真题2

题目要求:将形参s所指向的字符串转换为整数并且返回

知识点:

将字符1转化为整数1

cs 复制代码
int fun(char *s)
{
    int flag=1,n=0;  
	if(*s=='-')        //先根据第一个符号来判断是正负;然后读取第二位
    {
      flag=-1;
      s++;      
    }
    else if(*s=='+')
    {
       s++;
    }
    while(*s>='0'&&*s<='9')//判断是否为字符,如果不是则退出循环
    {
        n=n*10+*s-'0';       //打印整数
        s++;                 //将字符'1'转化为整数1的方式;ASCII码  
    }
    return flag*n;
}
/*
字符串转整数
1.指针操作:
函数通过指针 s 来访问字符串。
通过 s++ 来移动指针到字符串的下一个字符。
2.字符与数字的转换:
通过 *s - '0' 将字符转换为对应的整数值。
3.处理正负号:
函数首先检查字符串的第一个字符是否是正负号。如果是负号('-'),则设置 flag 为 -1,并跳过负号字符;如果是正号('+'),则直接跳过正号字符。
4.循环与条件判断:(检查数字)
使用 while 循环遍历字符串中的每个字符,直到遇到非数字字符为止。
循环条件 *s>='0' && *s<='9' 用于检查当前字符是否为数字。
5.整数溢出:
这个简化实现没有处理整数溢出的情况。在实际应用中,当处理的数字非常大时,可能会导致整数溢出,这是一个需要注意的安全问题。
6.错误处理:
函数没有处理非法输入(如包含非数字字符的字符串)。在实际应用中,可能需要增加错误处理逻辑,比如当遇到非数字字符时返回特定的错误码或执行其他错误处理措施。
7.返回值:
函数最终返回转换后的整数,考虑了正负号(通过 flag 变量)。
边界条件:
8.如果输入字符串为空或只包含正负号而不跟数字,函数将返回 0。这是因为 n 被初始化为 0,且循环体不会执行。
*/
相关推荐
Lenyiin1 分钟前
01.02、判定是否互为字符重排
算法·leetcode
小林熬夜学编程5 分钟前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
鸽鸽程序猿16 分钟前
【算法】【优选算法】宽搜(BFS)中队列的使用
算法·宽度优先·队列
Jackey_Song_Odd17 分钟前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
Watermelo61720 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
乐之者v26 分钟前
leetCode43.字符串相乘
java·数据结构·算法
A懿轩A1 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神1 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人1 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香2 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法