100-999其间查找既是完全平方数(如11*11=121)又有其中的两个数相同(如121中有两个1),代码中为什么输出为零,求解数组的值传递详解

100-999之间查找既是完全平方数(如11*11=121)又有其中的两个数相同(如121中有两个1),代码中为什么输出为零,求解数组的值传递详解。
int main()
{
        int i,j,a[3]={0};
int square;//定义开平方数变量
for (i=10;i<32;i++)
{
square=i*i;
for(j=0;j<3;j++)//把平方数中的每一位放置在数组a中
{
a[j]=square%10;
square=square/10;
}
if(a[0]==a[1]||a[0]==a[2]||a[1]==a[2])//判断任意两位是否相等并输出
                     printf("%d\n",square);
}
return 0;
}
数组值传递 变量作用域

------解决方案--------------------
因为你square=square/10做了三次以后变0了。直接输出i*i就行。
------解决方案--------------------
printf("%d\n",square);
这句改成
printf("%d\n", i*i);
------解决方案--------------------
int main()
{
        int i,j,a[3]={0};
int square;//定义开平方数变量
for (i=10;i<32;i++)
{
square=i*i;
for(j=0;j<3;j++)//把平方数中的每一位放置在数组a中
{
a[j]=square%10;
square=square/10;  //这里循环完后square的值就是0了
}
if(a[0]==a[1]
------解决方案--------------------
a[0]==a[2]
------解决方案--------------------
a[1]==a[2])//判断任意两位是否相等并输出
                     printf("%d\n",i*i);   //打印的时候直接打印i*i就行了
}
return 0;
}