bool fun(int i) //i为要测试的平方数
{
int a[6],flag=1; //用来存储该数的每一位,从a[1]存到a[5].flag标志该数的位数。
for(int m=1;m<=5;m++) //先取余得个位,在除以10取余得十位,进而得到每一个数位的值。
{
a[m]=i%10;
i=i/10;
}
for(int n=5;n>2;n--)
{
if(a[n]==0&&a[n-1]!=0)
flag=n-1;
}
if(flag==1)
{
cout<<"wrong"<<endl;
return 0;
}
for(int p=1;p<=flag/2;p++)
{
if(a[p]!=a[flag-p+1])
{
cout<<"wrong"<<endl;
return 0;
}
}
cout<<flag<<" "<<"right"<<endl;
return 1;
}
以上解法没有好好考虑n在循环中的所有变化,只是想当然地凭感觉地做一切。
bool fun(int i) //i为要测试的平方数
{
int a[6],flag=1; //用来存储该数的每一位,从a[1]存到a[5].flag标志该数的位数。
for(int m=1;m<=5;m++) //先取余得个位,在除以10取余得十位,进而得到每一个数位的值。
{
a[m]=i%10;
i=i/10;
}
for(int n=5;n>2;n--)
{
if(a[n]!=0)
{
flag=n;
break;
}
if(a[n]==0&&a[n-1]!=0)
{
flag=n-1;
break;
}
}
if(flag==1)
{
return 0;
}
for(int p=1;p<=flag/2;p++)
{
if(a[p]!=a[flag-p+1])
{
return 0;
}
}
//cout<<flag<<" "<<"right"<<endl;
return 1;
}