翻转输出一个正整数,例如,输入123,输出321;输入1234,输出4321,如输入为负数或者0,则输出error, 等等。
时间: 2024-12-08 21:24:46 浏览: 25
这是一个常见的编程练习,需要实现一个函数或者程序,将给定的正整数从前往后逐位翻转。如果输入的是负数或0,应该返回"error"。这个过程通常涉及到字符串处理,可以先将数字转换成字符串,然后按字符顺序逆序排列,最后再转换回整数。以下是Python的一个简单示例:
```python
def reverse_integer(num):
if num < 0:
return "error"
else:
reversed_str = str(abs(num))[::-1]
if '0' <= reversed_str[0] <= '9':
return int(reversed_str)
else:
return "error"
# 测试例子
print(reverse_integer(123)) # 输出 321
print(reverse_integer(1234)) # 输出 4321
print(reverse_integer(-123)) # 输出 error
```
在这个代码中,我们首先检查输入是否为负数,如果是则直接返回"error"。接着,我们将数字取绝对值并转换为字符串,然后使用切片操作`[::-1]`将其反转。最后,我们需要验证反转后的字符串是否只包含数字字符,如果不是则返回"error"。
相关问题
用C++写以下程序:生成一个小于(包括)3位的正整数的对称数:如由123生成123321, 若输入为负数或0,返回-1,若输入大于3位的正整数,只取最后三位生成对称数。
好的,下面是这个程序的代码:
```
#include <stdio.h>
int main() {
int n, num;
printf("请输入一个小于等于3位的正整数:");
scanf("%d", &n);
if (n <= 0) {
printf("-1\n");
return 0;
}
num = n;
int rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
if (n != rev) {
n = n % 100;
num = n;
rev = 0;
while (num != 0) {
rev = rev * 10 + num % 10;
num /= 10;
}
printf("%d\n", rev * 100 + n);
} else {
printf("%d\n", n * 100 + n);
}
return 0;
}
```
这个程序主要使用了一个循环来将输入的数进行翻转,然后判断其是否与原数相等。若相等,则说明原数已经是对称数了,直接输出即可。若不相等,则说明原数不是对称数,需要取其最后三位再进行翻转,然后再将两部分拼接成对称数输出。同时还对输入的数进行了一些限制,保证程序的正确性。
阅读全文