/*
判断任意输入的一个整数是否为回文数
思路: 将所输入的数字从个位数开始按顺序分解到数组1,2,3,4...里,
然后将数组的两头进行对比,从而判断其是否为回文数
*/
#include<stdio.h>
#include <conio.h>
#include<math.h>
int main()
{
int a[20]; //数组从1开始,0舍弃
int num,lenth,n,i,b=0,c=0,p;
// n是每一位数所在数组的编号;i用来判断是否为回文数;p用来打印数组进行验证
printf("请输入一个至少为三位数的数字\n");
scanf("%d",&num);
printf("请输入%d的位数\n",num);
scanf("%d",&lenth);
while (num<100) /*必须输入一个三位以上的整数*/
{
printf("请输入一个至少为三位数的数字\n");
scanf("%d",&num);
}
for (n=1;n<=(lenth-1);n++) //分解所输入数除最高位的每一位数
{
a[n]=num%((int)pow(10,n))/(pow(10,n-1));
printf("a[%d]= %d\n",n,a[n]); //打印每一位的数字
}
a[lenth]=num/(pow(10,lenth-1)); //读取最高位
printf("a[%d]= %d\n",lenth,a[lenth]); //打印最高位
//以下是判断所输入数字是否为回文数
if (lenth%2==0) //为偶数位时
{
for (i=1;i<=(lenth/2);i++)
{
if (a[i]==a[lenth+1-i]) b++;
}
if (b==(lenth/2))
printf("%d 是回文数 ",num);
else
printf("%d 不是回文数",num);
}
else //为奇数位时
{
for(i=1;i<=((lenth-1)/2);i++)
if (a[i]==a[lenth+1-i]) c++;
if (c==((lenth-1)/2))
printf("%d 是回文数 ",num);
else
printf("%d 不是回文数",num);
}
getch();
return 0;
}
当我输入1234321时结果如下
请输入一个至少为三位数的数字
1234321
请输入1234321的位数
7
a[1]= 1
a[2]= 8
a[3]= 3
a[4]= 4
a[5]= 3
a[6]= 2
a[7]= 1
1234321 不是回文数
不知为何,还望大家帮忙看看