#include <stdio.h>
int main()
{
int i;
int j;
int k;
int m;
int n;
int cont = 0;
int l = 0;
int a [ 6 ];
for(i = 255; i >0 ; i--)
{
m = i*i;
for( cont = 0; m != 0; cont++)
m = m/10;
m = i*i;
for( j = 1,k = 10000; j<6 ; j++)
{
int main()
{
int i;
int j;
int k;
int m;
int n;
int cont = 0;
int l = 0;
int a [ 6 ];
for(i = 255; i >0 ; i--)
{
m = i*i;
for( cont = 0; m != 0; cont++)
m = m/10;
m = i*i;
for( j = 1,k = 10000; j<6 ; j++)
{
a [ j ] = m/k;
m = m%k;
k = k/10;
}
for( j = 6-cont,n = 1,l =0; j < 6; j++ )
{
l += a [ j ]*n;
n *= 10;
}
if(l == i*i)
printf("%d\n",i);
}
}
在调试过程中,结果只显示0,1,376,625;在gdb调试中发现最后一个for循环固定以a[0]开始,不符合要求,经过修改for(j =cont,n = 1,l = 0;j<6; j++);结果只输出376,625;又通过gdb调试发现cont值始终为3-5;最后将j= cont 改为 j = 6-cont,得出正确结果。