如何判断一个5位数是否为回文数?
1、 这里我们可以使用sprintf,将数字直接转换为字符数组,如下
char str[6];
int num;
printf("请输入一个五位数:");
scanf("%d", &num);
// 将这个五位数转换为字符数组
sprintf(str,"%d",num);//此库函数的作用为将格式化的num写入到字符数组str中

2、 我们开始分别比较字符数组的下标0、4对应值是否相等,下标1、3值是否相等,如果相等就认为这是回文数,比如:45654
代码如下:
//开始计算是否为回文数
if (str[0] == str[4] && str[1] == str[3])
{
printf("%d 是回文数\n", num);
}
else
{
printf("%d 不是回文数\n", num);
}

3、完整代码如下
#include <stdio.h>
#include <stdlib.h>
/*
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/
int main(void)
{
//方式一,直接转换字符串,然后直接通过下标取值比较
char str[6];
int num;
printf("请输入一个五位数:");
scanf("%d", &num);
// 将这个五位数转换为字符数组
sprintf(str, "%d", num); //此库函数的作用为将格式化的num写入到字符数组str中
//开始计算是否为回文数
if (str[0] == str[4] && str[1] == str[3])
{
printf("%d 是回文数\n", num);
}
else
{
printf("%d 不是回文数\n", num);
}
return 0;
}

4、执行结果: 下面我输入了多组数据进行了验证
请输入一个五位数:12345
12345 不是回文数
请输入一个五位数:12321
12321 是回文数
请输入一个五位数:56765
56765 是回文数
请输入一个五位数:56789
56789 不是回文数
请输入一个五位数:88888
88888 是回文数
请输入一个五位数:88889
88889 不是回文数

5、扩展:也可以使用另一种方法,即将每一位分别解析出来,然后进行比较第一位和第四位,第二位和第三位,这样就不需要转换为字符串了,不过这样在逻辑理解上要麻烦写
如下:
#include <stdio.h>
#include <stdlib.h>
/*
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/
int main()
{
//方式二,将数字转换为数组,然后直接通过下标取值比较
int num, item, i;
int nums[5];
//模拟传入固定了的int类型五位数
printf("请输入一个五位数:");
scanf("%d", &num);
//将整个数每位解析出来放入到int数组中
item = num;
i = 4;
while (item != 0)
{
nums[i--] = item % 10;
item = item / 10;
}
//开始计算是否为回文数
if (nums[0] == nums[4] && nums[1] == nums[3])
{
printf("%d 是回文数\n", num);
}
else
{
printf("%d 不是回文数\n", num);
}
return 0;
}
