如何判断一个5位数是否为回文数?

2025-11-19 16:29:30

1、 这里我们可以使用sprintf,将数字直接转换为字符数组,如下

char str[6];

int num;

printf("请输入一个五位数:");

scanf("%d", &num);

// 将这个五位数转换为字符数组

sprintf(str,"%d",num);//此库函数的作用为将格式化的num写入到字符数组str中

如何判断一个5位数是否为回文数?

2、 我们开始分别比较字符数组的下标0、4对应值是否相等,下标1、3值是否相等,如果相等就认为这是回文数,比如:45654

代码如下:

//开始计算是否为回文数

if (str[0] == str[4] && str[1] == str[3])

{

printf("%d 是回文数\n", num);

}

else

{

printf("%d 不是回文数\n", num);

}

如何判断一个5位数是否为回文数?

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;

}

如何判断一个5位数是否为回文数?

4、执行结果:  下面我输入了多组数据进行了验证

请输入一个五位数:12345

12345 不是回文数

请输入一个五位数:12321

12321 是回文数

请输入一个五位数:56765

56765 是回文数

请输入一个五位数:56789

56789 不是回文数

请输入一个五位数:88888

88888 是回文数

请输入一个五位数:88889

88889 不是回文数

如何判断一个5位数是否为回文数?

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;

}

如何判断一个5位数是否为回文数?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢