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、执行结果: 下面我输入了多组数据进行了验证请输入一个五位数:1234512345 不是回文数请输入一个五位数:1232112321 是回文数请输入一个五位数:5676556765 是回文数请输入一个五位数:5678956789 不是回文数请输入一个五位数:8888888888 是回文数请输入一个五位数:8888988889 不是回文数
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;}