给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(用c语言编写)
时间: 2023-05-24 07:01:31 浏览: 222
以下是c语言代码:
#include <stdio.h>
int reverse(int num){
int rev = 0;
while(num != 0){
rev = rev * 10 + num % 10;
num /= 10;
}
return rev;
}
int main(){
int num;
printf("请输入一个整数:\n");
scanf("%d", &num);
int rev = reverse(num);
printf("反转后的整数为:%d\n", rev);
return 0;
}
相关问题
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
这个问题可以通过将数字转换为字符串,然后反转字符串,再将反转后的字符串转换为数字的方式来解决。以下是代码示例:
```
def reverse_num(num):
if num == 0:
return 0
num_str = str(num)
reversed_str = num_str[::-1]
if reversed_str[0] == '0':
reversed_str = reversed_str[1:]
return int(reversed_str)
```
使用示例:
```
num = 12345
reversed_num = reverse_num(num)
print(reversed_num) # 输出 54321
num = 12000
reversed_num = reverse_num(num)
print(reversed_num) # 输出 21
```
注意,默认情况下,反转字符串的方式会保留原字符串的第一个字符(即最高位数字),所以需要判断反转后的字符串是否以0开头,如果是,则需要将第一个字符去除。
使用C++给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
。示例:
输入:123
输出:321
输入:-123
输出:-321
输入:120
输出:21
解题思路:
我们可以将该整数从低位到高位的每一位数字依次取出,然后反转过来,最后组成一个新的整数。需要注意的是,如果原数为负数,则新数也应该为负数,且需要将原数的符号位去掉再进行反转。
代码实现:
int reverse(int x){
int flag = 1; // 标记正负号
if(x < 0){
flag = -1;
x = -x;
}
long long res = 0; // 新数
while(x){
res = res * 10 + x % 10;
x /= 10;
}
res *= flag; // 恢复符号
if(res > INT_MAX || res < INT_MIN) // 溢出判断
return 0;
return res;
}
阅读全文