回文数的判断

回文数的判断
编写函数 palindromeNumber,求[200,3000]范围内的回文数有哪些,在主函数中调用该函数。

输出区间[200,3000]中所有的回文数,一行一个回文数,不需要输出其它无关的字符。
回文数是指顺着读和反着读都相同的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void palindromeNumber()
{

int arr[4];
int x = 0;
int num = 0;
for (int i = 200; i <= 3000; i++)
{
x = 0;
num = 0;
x = i;
while ((x / 10) > 0)
{

arr[num] = x % 10;
x = x / 10;
num++;
}
arr[num] = x % 10;
if (arr[0] == arr[num] && arr[1] == arr[num - 1])
{
printf("%d\n", i);
}
}
}
int main()
{
palindromeNumber();
return 0;
}

该题目要求我们用编写一个函数来解决

由题可知回文数的判断和输出全都可以在函数内部完成。现在我们定义该函数为palindromeNumber()我们不需要其返回值所以返回类型为void。
接着编写函数主体部分,首先我们得思考如何判断一个数是否为回文数,我们可以将一个数的每一位都按顺序拆开,然后分别比较第一位与最后一位数字是否相同
第二位与倒数第二位数字是否相同,以此类推。如果以上操作中全部都是相同的,那么可以判断该数是回文数。
因此我们先定义一个数组arr【4】,题目中最大数字为3000,我们可以选择容量为4的数组,定义变量x,用来存放每一个判断的数,定义变量num用来作为数组下标。接着利用一个for循环将我们所要判断的数字的范围作为循环,循环中我们先将x=0,num=0,方便每一次循环进来都是0,然后将i赋值給x,不然在循环i++的时候,可能因为循环内部的一些操作使i改变,而不是范围里面的了,接着用一个
while将数的每一位数都存放到数组中,循环后因为还有一位数字没有存入数组,因此在进行一次,最后运用一个判断语句判断比较第一位与最后一位数字是否相同,第二位与倒数第二位数字是否相同,如果相同,则输出该数字,且进入下一次循环,继续判断,直至结束。