本文概述
- C ++
- Java
- python
- C#
- 的PHP
- C ++
- C
- Java
- Python3
- C#
让我们看看整数位数反转的简单方法.
C ++
// A simple C program to reverse digits of
// an integer.
#include <
stdio.h>
int reversDigits( int num)
{
int rev_num = 0;
while (num >
0)
{
rev_num = rev_num*10 + num%10;
num = num/10;
}
return rev_num;
}/* Driver program to test reversDigits */
int main()
{
int num = 5896;
printf ( "Reverse of no. is %d" , reversDigits(num));
return 0;
}
Java
// Java program to reverse a number class GFG
{
/* Iterative function to reverse
digits of num*/
static int reversDigits( int num)
{
int rev_num = 0 ;
while (num >
0 )
{
rev_num = rev_num * 10 + num % 10 ;
num = num / 10 ;
}
return rev_num;
}// Driver code
public static void main (String[] args)
{
int num = 4562 ;
System.out.println( "Reverse of no. is "
+ reversDigits(num));
}
}// This code is contributed by Anant Agarwal.
python
# Python program to reverse a number n = 4562 ;
rev = 0while (n >
0 ):
a = n % 10
rev = rev * 10 + a
n = n / 10print (rev)# This code is contributed by Shariq Raza
C#
// C# program to reverse a number
using System;
class GFG
{
// Iterative function to
// reverse digits of num
static int reversDigits( int num)
{
int rev_num = 0;
while (num >
0)
{
rev_num = rev_num * 10 + num % 10;
num = num / 10;
}
return rev_num;
}// Driver code
public static void Main()
{
int num = 4562;
Console.Write( "Reverse of no. is "
+ reversDigits(num));
}
}// This code is contributed by Sam007
的PHP
<
?php
// Iterative function to
// reverse digits of num
function reversDigits( $num )
{
$rev_num = 0;
while ( $num >
1)
{
$rev_num = $rev_num * 10 +
$num % 10;
$num = (int) $num / 10;
}
return $rev_num ;
}// Driver Code
$num = 4562;
echo "Reverse of no. is " , reversDigits( $num );
// This code is contributed by aj_36
?>
输出如下:
6985
【如何反向一个整数的位数((包括溢出处理))】但是, 如果数量很大, 以至于反向溢出, 则输出是一些垃圾值。如果我们使用输入为任意大的数字来运行上面的代码, 请说1000000045, 则输出是一些垃圾值, 例如1105032705或任何其他垃圾值。看到这个用于输出。
如何处理溢出?
想法是存储和的先前值可以存储在变量中, 该变量可以每次检查以查看反向是否溢出。
下面是处理这种情况的实现。
C ++
// C++ program to reverse digits
// of a number
#include <
bits/stdc++.h>
using namespace std;
/* Iterative function to reverse
digits of num*/
int reversDigits( int num)
{
// Handling negative numbers
bool negativeFlag = false ;
if (num <
0)
{
negativeFlag = true ;
num = -num ;
}int prev_rev_num = 0, rev_num = 0;
while (num != 0)
{
int curr_digit = num % 10;
rev_num = (rev_num * 10) + curr_digit;
// checking if the reverse overflowed or not.
// The values of (rev_num - curr_digit)/10 and
// prev_rev_num must be same if there was no
// problem.
if ((rev_num - curr_digit) /
10 != prev_rev_num)
{
cout <
<
"WARNING OVERFLOWED!!!"
<
<
endl;
return 0;
}prev_rev_num = rev_num;
num = num / 10;
}return (negativeFlag == true ) ?
-rev_num : rev_num;
}// Driver Code
int main()
{
int num = 12345;
cout <
<
"Reverse of no. is "
<
<
reversDigits(num) <
<
endl;
num = 1000000045;
cout <
<
"Reverse of no. is "
<
<
reversDigits(num) <
<
endl;
return 0;
}// This code is contributed
// by Akanksha Rai(Abby_akku)
C
// C program to reverse digits of a number
#include <
stdio.h>
/* Iterative function to reverse digits of num*/
int reversDigits( int num)
{
// Handling negative numbers
bool negativeFlag = false ;
if (num <
0)
{
negativeFlag = true ;
num = -num ;
}int prev_rev_num = 0, rev_num = 0;
while (num != 0)
{
int curr_digit = num%10;
rev_num = (rev_num*10) + curr_digit;
// checking if the reverse overflowed or not.
// The values of (rev_num - curr_digit)/10 and
// prev_rev_num must be same if there was no
// problem.
if ((rev_num - curr_digit)/10 != prev_rev_num)
{
printf ( "WARNING OVERFLOWED!!!\n" );
return 0;
}prev_rev_num = rev_num;
num = num/10;
}return (negativeFlag == true )? -rev_num : rev_num;
}/* Driver program to test reverse Digits */
int main()
{
int num = 12345;
printf ( "Reverse of no. is %d\n" , reversDigits(num));
num = 1000000045;
printf ( "Reverse of no. is %d\n" , reversDigits(num));
return 0;
}
Java
// Java program to reverse digits of a numberclass ReverseDigits
{
/* Iterative function to reverse digits of num*/
static int reversDigits( int num)
{
// Handling negative numbers
boolean negativeFlag = false ;
if (num <
0 )
{
negativeFlag = true ;
num = -num ;
}int prev_rev_num = 0 , rev_num = 0 ;
while (num != 0 )
{
int curr_digit = num% 10 ;
rev_num = (rev_num* 10 ) + curr_digit;
// checking if the reverse overflowed or not.
// The values of (rev_num - curr_digit)/10 and
// prev_rev_num must be same if there was no
// problem.
if ((rev_num - curr_digit)/ 10 != prev_rev_num)
{
System.out.println( "WARNING OVERFLOWED!!!" );
return 0 ;
}prev_rev_num = rev_num;
num = num/ 10 ;
}return (negativeFlag == true )? -rev_num : rev_num;
}public static void main (String[] args)
{
int num = 12345 ;
System.out.println( "Reverse of no. is " + reversDigits(num));
num = 1000000045 ;
System.out.println( "Reverse of no. is " + reversDigits(num));
}
}
Python3
# Python program to reverse digits
# of a number """ Iterative function to reverse
digits of num"""
def reversDigits(num): # Handling negative numbers
negativeFlag = False
if (num <
0 ):negativeFlag = True
num = - num prev_rev_num = 0
rev_num = 0
while (num ! = 0 ): curr_digit = num % 10rev_num = (rev_num * 10 ) + curr_digit # checking if the reverse overflowed or not.
# The values of (rev_num - curr_digit)/10 and
# prev_rev_num must be same if there was no
# problem.
if (rev_num >
= 2147483647 or
rev_num <
= - 2147483648 ):
rev_num = 0
if ((rev_num - curr_digit) / / 10 ! = prev_rev_num):print ( "WARNING OVERFLOWED!!!" )
return 0prev_rev_num = rev_num
num = num / / 10return - rev_num if (negativeFlag = = True ) else rev_num # Driver code
if __name__ = = "__main__" :
num = 12345
print ( "Reverse of no. is " , reversDigits(num)) num = 1000000045
print ( "Reverse of no. is " , reversDigits(num)) # This code is contributed
# Shubham Singh(SHUBHAMSINGH10)
C#
// C# program to reverse digits
// of a number
using System;
class GFG
{/* Iterative function to reverse
digits of num*/
static int reversDigits( int num)
{
// Handling negative numbers
bool negativeFlag = false ;
if (num <
0)
{
negativeFlag = true ;
num = -num ;
} int prev_rev_num = 0, rev_num = 0;
while (num != 0)
{
int curr_digit = num % 10;
rev_num = (rev_num * 10) +
curr_digit;
// checking if the reverse overflowed
// or not. The values of (rev_num -
// curr_digit)/10 and prev_rev_num must
// be same if there was no problem.
if ((rev_num - curr_digit) / 10 != prev_rev_num)
{
Console.WriteLine( "WARNING OVERFLOWED!!!" );
return 0;
} prev_rev_num = rev_num;
num = num / 10;
} return (negativeFlag == true ) ?
-rev_num : rev_num;
} // Driver Code
static public void Main ()
{
int num = 12345;
Console.WriteLine( "Reverse of no. is " +
reversDigits(num));
num = 1000000045;
Console.WriteLine( "Reverse of no. is " +
reversDigits(num));
}
}// This code is contributed by ajit
输出如下:
Reverse of no. is 54321
WARNING OVERFLOWED!!!
Reverse of no. is 0
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- 算法设计(如何实现CamelCase模式匹配(代码示例))
- Win8.1桌面与任务栏总是自动刷新怎样处理?
- Win8.1无法升级Win10出错80240020怎样处理?
- Win8系统如何用Dism命令安装补丁文件?
- Win8.1复制文件时提示要提供管理员权限的处理办法
- Win8.1系统弹出powerpnt.exe-系统出错如何处理?
- Win8.1无法引导出错代码0xc0000225的修好方案
- Win8系统应用商店无法连接怎样办?
- 如何处理Win8应用商店中无法登录微软账户问题?