回文数生成

先判断输入数是否为回文数(正读反读都一样),若不是,将n与其反序数相加,再判断,再将该反序数相加………直到得到一个反序数为止。
278不是回文,反序数872,相加后得到1150,不是回文,再与其反序数511相加,得到的1661是回文数!OK

#include<stdio.h>
#include<stdlib.h>
int isPalm(long m)
{
  int  i=0,k=0;
  char str[32];
  while(m>0)      //由个位数逐个取出,存入字符数组
  {
    str[k++]=m%10+'0';
    m=m/10;
  }
  for(i=0;i<k/2;i++)     //判断是否为回文数
  {
    if(str[i]!=str[k-i-1])
      return 0;
    retuen 1;
  }
 }  
 int main()
 {
    long n,a,t;
    printf("请输入一个少于1000的三位整数:\n");
    scanf("%ld",&n);
    if(n<100||n>=1000)
      return -1;
    printf("生成回文数的过程如下:\n");
    while(!isPlam(n))    //n不是反序数时,进入循环
    {
       printf("%ld->",n);
       for(a=0,t=n;t>0;)   //计算n的反序数,存入a
       {
         a=a*10+t%10;
         t=t/10;
       }
       n+=a;    //与其反序数相加
    }
   printf("%ld",n);
   system("PAUSE");
   return 0;
  }  

你可能感兴趣的:(回文数,C语言编程)