【C语言题目练习】算法 整数反转

题目:

练习:

运行结果:

一、读题

1、输入是 int 整数,范围:-2147483648, 2147483647

2、把数字倒过来,符号不动

3、末尾的 0 反转后不要

4、反转后的数字如果超出 int 范围 → 返回 0

5、不能用 long long,不能借助 64 位大数存结果,必须提前预判溢出

二、思路

不断取出 x 最后一位digit = x%10,x=x/10砍掉最后一位,res = res*10 + digit

(提前防溢出,不能等乘完再判断,int 溢出会乱。)

例子:

res 初始 = 0

1、x=123,digit=123%10=3;x=123/10=12

检查溢出,没问题。res = 0*10 +3 = 3

2、x=12,digit=2;x=1

检查溢出,没问题。res =3*10+2=32

3、x=1,digit=1;x=0

检查溢出,没问题。res=32*10+1=321

x=0,循环结束,返回 321

三、溢出预判

int 最大值 INT_MAX = 2147483647,INT_MAX /10 = 214748364

如果 res > 214748364:res*10 直接爆上限,溢出

如果 res == 214748364,并且取出的个位digit>7,res*10+digit>2147483647溢出

int 最小值 INT_MIN = -2147483648,INT_MIN /10 = -214748364

如果 res < -214748364:res*10 直接爆下限,溢出

如果 res == -214748364,并且digit < -8,就溢出

相关推荐
一去不复返的通信er4 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
2501_944521594 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理4 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu1145 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
程序 代码狂人6 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade7 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
meiying88388 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
Zwawa8 小时前
编译器工具链:GCC、Clang、MSVC、ICC、armclang
c语言·嵌入式·编译器
@大迁世界8 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper8 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash