打印所有不超过n(取n<256) 的其平方具有对称性质的数(也称回文数)。
*问题分析与算法设计
对于要判断的数n,计算出其平方后(存于a),将a的每一位进行分解,再按a的从低到高的顺序将其恢复成一个数k(如n=13,则a=169且k=961),若a等于k则可判定n为回文数。
*程序说明与注释
原程序好像有错,而且比较费解,现基于原程序修改如下(如果读者还发现错误请提出):
#include
int main(void)
{
int m[16],n,i,t,count=0;
long unsigned a,k;
printf("No. number it's square(palindrome)\n");
for(n=1;n<256;n++) /*穷举n的取值范围*/
{
k=0;t=1;a=n*n; /*计算n的平方*/
for(i=0;a!=0;i++) /*从低到高分解数a的每一位存于数组m[0]~m[16]*/
{
m[i]=a%10;//这个是取得a的个位,整个循环合起来就可以取得各个位
a/=10;
}
int j=0;