用C++写以下程序:生成一个小于(包括)3位的正整数的对称数:如由123生成123321, 若输入为负数或0,返回-1,若输入大于3位的正整数,只取最后三位生成对称数。
时间: 2024-05-01 08:17:34 浏览: 65
好的,下面是这个程序的代码:
```
#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;
}
```
这个程序主要使用了一个循环来将输入的数进行翻转,然后判断其是否与原数相等。若相等,则说明原数已经是对称数了,直接输出即可。若不相等,则说明原数不是对称数,需要取其最后三位再进行翻转,然后再将两部分拼接成对称数输出。同时还对输入的数进行了一些限制,保证程序的正确性。
阅读全文