终于写出来了,希望对你有帮助!
#include<stdio.h>
int main()
{
int a[21][3];
int i,j=0;
int n=0,b,k;
int t[3]={0};
int zong[21];
for(i=11;i<32;i++)
{ b=i*i;
t[0]=b%10;
t[1]=b/10%10;
t[2]=b/100;
if((t[0]-t[1])*(t[0]-t[2])*(t[1]-t[2])!=0&&t[0]!=0&&t[1]!=0) //排除个位十位百位数字相同的情况,以及个位十位为0的情况
{
a[j][0]=t[0]; /*将三位数依次存入数组a*/
a[j][1]=t[1];
a[j][2]=t[2];
zong[j]=i*i;
j++;
}
}
for(i=0;i<j-2;i++)
{
for(b=i+1;b<j-1;b++)
{
for(k=b+1;k<j;k++)
{int s[9]={0};
s[a[i][0]-1]=1;
s[a[i][1]-1]=1;
s[a[i][2]-1]=1;
s[a[b][0]-1]=1;
s[a[b][1]-1]=1;
s[a[b][2]-1]=1;
s[a[k][0]-1]=1;
s[a[k][1]-1]=1;
s[a[k][2]-1]=1; //数组s中有九个元素,全部初始为0,
// 数组a中的元素为1~9,而数组s的下标从0~8,所以数组a中的各个元素要-1*/
for(n=0;n<9;n++)
{
if(s[n]!=1)
{
break;
}
}
if(n==9) //判断是不是数组a的第i行,第b行和第k行中所有元素正好为 1~9
{
t[0]=i;
t[1]=b;
t[2]=k;
break;
}
}
if(n==9)
break;
}
if(n==9)
break;
}
printf("\n%d %d %d",zong[t[0]],zong[t[1]],zong[t[2]]);
return 0;
}