题目描述
【问题描述】用函数嵌套调用方式输出指定范围[a,b]的所有回文数(不考虑[a,b]的范围不合理的情况)。所谓回文数就是指一个整数,当它的各位数字逆序排列,形成的整数与原整数相同,这样的数称为回文数。例如,素数11,373,其各位数字对换位置后仍然为11,373,因此这两个整数均为回文数。
要求:
(1)一个函数名为InvertSequence(),函数名和函数的参数自行确定,调用该函数可将一个正整数的逆序返回,比如用123调用该函数,将返回321.
(2)编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回true,否则返回false。
(3)使用函数嵌套调用方式,在函数loop 中实现函数InvertSequence()的调用以数的逆序。
(4)编写合适的主函数,以实现指定范围[a,b]的所有回文数
【输入形式】编写一个函数名为InvertSequence(),函数名和函数的参数自行确定,调用该函数可将一个正整数的逆序返回,比如用123调用该函数,将返回321.
【输出形式】在主函数中输入一个a,b ,输出[a,b]之间的所有的回文数,一个数字一行显示
【样例输入1】3 120
【样例输出1】
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
101
111
解题思路
根据之前判断回文数的函数,然后遍历判断即可
源代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int InvertSequence(int x) {
if (x < 10) return x;
else if (x >= 10 && x < 100) return x % 10 * 10 + x / 10;
else return x % 10 * 100 + x % 100 / 10 * 10 + x / 100;
}
int loop(int x) {
int flag;
flag = (x == InvertSequence(x)) ? 1 : 0;
return flag;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
for (int i = a; i <= b; i++)
if (loop(i)) printf("%d\n", i);
system("pause");
return 0;
}
总结
相对基础,考察代码逻辑等等