回文数是将自然数n的各位数字反向排列得到自然数n1,若n1与n相等,则称为回文数,例如12321
//从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数
//回文数是将自然数n的各位数字反向排列得到自然数n1,若n1与n相等,则称为回文数,例如12321
#include<stdio.h>
#include<math.h>
int getLength(long int num) //定义函数getLength,计算正整数num的位数
{int found, length;found = 0;length = 10; //设定正整数num的位数小于或等于10if(num == 0) return 1;while(found == 0){if(num/(int)pow(10,length-1)>0) found=1;//库函数pow(10,length-1)的功能是计算10的(length-1)次幂else length-=1;}return(length);
}
int isHuiHanShu(long int num) //定义函数isHuiHanShu,判断正整数num是否是回文数
{long int n; //定义变量n,保存从键盘输入的正整数int left; //定义变量left,保存正整数最左边的数字int right; //定义变量right,保存正整数最右边的数字int i; //定义变量i,保存正整数的位数int flag;//定义变量flag,保存是否是回文数的标志。若不是回文数,则flag=1;否则flag=0i = getLength(num); //调用函数getLength,将正整数num的位数赋予变量in = num;flag = 0;while(i>1&&flag==0){left = n/(int)pow(10,i-1); //将正整数n当前最左边的数字赋予变量leftright = n%10; //将正整数n当前最右边的数字赋予变量rightn = n%(int)pow(10,i-1)/10; i-=2;if(left != right) flag = 1;//若正整数n当前最左边和最右边的数字不相等,则是回文数,即标志变量flag赋值1}if(flag == 0) return 1; //若是回文数,则返回1else return 0; //若不是回文数,则返回0
}
int main(void) //主函数
{long int num;scanf("%d",&num); //从键盘输入一个正整数保存到变量numif(isHuiHanShu(num))printf("%d is a 回文数\n",num); //若是回文数,则屏幕上显示“是回文数”elseprintf("%d is not a 回文数\n",num); //否则,屏幕上显示“不是回文数”return 0;
}