给定一个 32 位有符号整数,将整数中的数字进行反转。
示例:
例如:给定数“456”,需返回“654”,给定“-876”,则需返回“-678”
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
解答(这篇文章思路分析还行,代码写的需要提高):
看到题意,我们知道:
(1)注意 X 的 正负 ,(若为 负数 ,为了防止做除法时(向下取整),取其绝对值 ,)用一个数 记录 X的状态
(2)首先需要将给定的数 X 的个位、十位 分隔开,
(3)再将分隔开的 位数 翻转
(4)将翻转好的 位数 ,进行组合,组合成为一个新的 数
(5)此时,用(1)中 记录数 判断 X的状态
(6)检查 翻转 后的值 是否 溢出 (5)和(6)可互换
代码如下:
“标头.h”
#pragma once
#include<stdio.h>
#include<Windows.h>
#include<math.h>
int reverse(int x) {
//如果 -10 < x < 10 表明 x为个位数,无需翻转
if (x<10 && x >-10)
return x;
//翻转后的每一位存储位置
int kk[32] = { 0 };
int i = 0;
//y 为检验x 是正 是负
int y = 1;
//如果x为负,则使用其y 记录,用x的绝对值做运算
if (x<0)
{
y = x;
x = -1 * x;
}
// 计算出翻转后的位置,
for (i = 0; x>9; i++)
{
kk[i] = x % 10;
x = x / 10;
}
// 最后一位 记录 x 的 最高位
kk[i] = x;
int c = 0;
c = i;
int dd = 0;
int j = 0;
// 计算翻转后的数的大小( 前面单纯计算翻转后的每一位所在位置)
for (j = 0; j <= c; j++)
{
dd = dd + kk[i--] * pow(10, j);
}
// y 为检验数,若y <0 则表明 x 是复数,翻转后依旧
if (y<0)
dd = -1 * dd;
// 若 翻转后 32位数 溢出,则将翻转后的数,置为0
if (dd>pow(2, 31) || dd <= -1 * pow(2, 31))
dd = 0;
return dd;
}
void test()
{
int h[3] = { -9, 1534236469, 789 };
int i = 0;
for (i = 0; i < 3; i++)
{
int m = reverse(h[i]);
printf("\t原:%d \n\t现: %d \n ----------\n", h[i], m);
}
}
源文件:"main.c"
#include"标头.h"
int main()
{
test();
system("pause");
return 0;
}
程序结果如图:
给定一个 32 位有符号整数,将整数中的数字进行反转。相关推荐
- 给定一个32位有符号整数,将整数中的数字进行翻转
给定一个32位有符号整数,将整数中的数字进行翻转 解题思路就是不断的求模,然后取余,然后注意溢出问题: 代码: #include<stdlib.h> #include<stdio.h ...
- 【第75题】给定一个字符串,将它转换成整数
文章目录 一.题目描述 二.解题思路 三.代码详解 一.题目描述 实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数 ...
- c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)
" 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...
- 32位有符号整数_[LeetCode] 8. 字符串转换整数 (atoi)
题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- 32位有符号整数_008. 字符串转换整数 (atoi) | Leetcode题解
点击上方"蓝色字体",选择"设为星标" 每天复习一道面试题,轻松拿大厂Offer~ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...
- c语言整形符号位_C语言中32位有符号整数如何定义
展开全部 根据计算机系统.编译系统的不同,32位有符号整数的定义会略有差异,通常的做法32313133353236313431303231363533e59b9ee7ad943133343136363 ...
- 给定一个10位的整数组成的串,形式如: d1d2d3d4d5d6d7d8d9d10 。 其中最后的一位(即 )是校验和,其使用以下运算规则以前面的9位上的整数作为参数获得结果
package Second;import java.util.InputMismatchException; import java.util.Scanner;public class Demo4 ...
- 计算一个 32 位无符号整数有多少个位为 1
http://blog.csdn.net/rappy/article/details/1788969 引用: Counting out the bits 可以很容易的判断一个数是不是2的幂次: ...
- 【LeetCode】【Java】13. 罗马数字转整数——给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 ...
最新文章
- 基于RDKit探索DrugBank(demo)
- junit单元测试报错InvalidTestClassError: Invalid test class
- 第三次学JAVA再学不好就吃翔(part63)--String和int的相互转换
- USACO2.4のP1522-牛的旅行(Cow Tours)【最短路Flody】
- Java文件快速copy复制
- 关于编程等宽字体 Cascadia Code
- Android 自定义控件之---3D画廊
- 突破领英限制如何查找非好友电话,邮箱技巧
- 学习笔记(02):【中国PHP教育大牛高洛峰】亲授php教程-PHP整型(integer)和浮点型(float或double)...
- 为您的创业公司推荐5款类Slack开源协作工具
- Java WebSocket 基础 建立端点
- 小波变换(wavelet transform)的通俗解释(一)
- 绝对值编码器单圈和多圈的区别
- iptables火墙服务
- 美国股市入门一:基本概念介绍
- Macbook terminal: No application knows how to open问题
- 将微服务应用于物联网
- linux显示启动logo源码分析以及修改显示logo
- OpenCV数字分割
- pmoA+16S测序+qPCR溶洞甲烷氧化菌的分布