关于一个C语言程序的问题!求大侠解答!

2024-11-13 09:30:06
推荐回答(3个)
回答1:

答案是9 34225 7396 81 900
#include
#include
int main()
{int A,M,E,R,Y,X,S,T,O,L,MERRY,XMAS,TO,ALL,sMERRY,sXMAS,sTO,sALL;
for(A=1;A<=9;A++)
{if((A!=1)&&(A!=4)&&(A!=9))continue;
for(M=1;M<=9;M++)
{if(M==A)continue;
for(E=0;E<=9;E++)
{if((A==E)||(M==E))continue;
for(R=0;R<=9;R++)
{if((A==R)||(M==R)||(E==R))continue;
for(Y=0;Y<=9;Y++)
{if((A==Y)||(M==Y)||(E==Y)||(R==Y))continue;
MERRY=M+E+R+R+Y;
if(MERRY!=sqrt(MERRY)*sqrt(MERRY))continue;
sMERRY=10000*M+1000*E+100*R+10*R+Y;
if(sMERRY!=sqrt(sMERRY)*sqrt(sMERRY))continue;
for(X=1;X<=9;X++)
{if((A==X)||(M==X)||(E==X)||(R==X)||(Y==X))continue;
for(S=0;S<=9;S++)
{if((A==S)||(M==S)||(E==S)||(R==S)||(Y==S)||(X==S))continue;
XMAS=X+M+A+S;
if(XMAS!=sqrt(XMAS)*sqrt(XMAS))continue;
sXMAS=1000*X+100*M+10*A+S;
if(sXMAS!=sqrt(sXMAS)*sqrt(sXMAS))continue;
for(T=1;T<=9;T++)
{if((A==T)||(M==T)||(E==T)||(R==T)||(Y==T)||(X==T)||(S==T))continue;
for(O=0;O<=9;O++)
{if((A==O)||(M==O)||(E==O)||(R==O)||(Y==O)||(X==O)||(S==O)||(T==O))continue;
TO=T+O;
if(TO!=sqrt(TO)*sqrt(TO))continue;
sTO=10*T+O;
if(sTO!=sqrt(sTO)*sqrt(sTO))continue;
for(L=0;L<=9;L++)
{if((A==L)||(M==L)||(E==L)||(R==L)||(Y==L)||(X==L)||(S==L)||(T==L)||(O==L))continue;
ALL=A+L+L;
if(ALL!=sqrt(ALL)*sqrt(ALL))continue;
sALL=100*A+10*L+L;
if(sALL!=sqrt(sALL)*sqrt(sALL))continue;
printf("%d %d%d%d%d%d %d%d%d%d %d%d %d%d%d\n",A,M,E,R,R,Y,X,M,A,S,T,O,A,L,L);
}
}
}
}
}
}
}
}
}
}
system("PAUSE");
}

回答2:

我执行了 你的程序 也没有错误 只是结果不是你上面写的
原因不知

回答3:

程序如下所示:
#include
#include
void main()
{int A,M,E,R,Y,X,S,T,O,L,MERRY,XMAS,TO,ALL,a2,b3,b4,c3,c4,d3,d4,e3,e4;double a1,b1,b2,c1,c2,d1,d2,e1,e2;
for(A=1;A<=9;A++)
{for(M=0;M<=9;M++)
{for(E=0;E<=9;E++)
{for(R=0;R<=9;R++)
{for(Y=0;Y<=9;Y++)
{for(X=0;X<=9;X++)
{for(S=0;S<=9;S++)
{for(T=0;T<=9;T++)
{for(O=0;O<=9;O++)
{for(L=0;L<=9;L++);
{
}
}
}
}
}
}
}
}
}
}
a1=A;
b1=M*10000+E*1000+R*100+R*10+Y;
b2=M+E+R+R+Y;
c1=X*1000+M*100+A*10+S;
c2=X+M+A+S;
d1=T*10+O;
d2=T+O;
e1=A*100+L*10+L;
e2=A+L+L;
a2=sqrt(a1);
b3=sqrt(b1);
b4=sqrt(b2);
c3=sqrt(c1);
c4=sqrt(c2);
d3=sqrt(d1);
d4=sqrt(d2);
e3=sqrt(e1);
e4=sqrt(e2);
if((a2*a2==a1)&&(b3*b3==b1)&&(b4*b4==b2)&&(c3*c3==c1)&&(c4*c4==c2)&&(d3*d3==d1)&&(d4*d4==d2)&&(e3*e3==e1)&&(e4*e4==e2)) A=a1;MERRY=b2;XMAS=c2;TO=d2;ALL=e2;
printf("A=%d,MERRY=%d,XMAS=%d,TO=%d,ALL=%d\n",A,MERRY,XMAS,TO,ALL);
}

输出的结果应该是:A=9,MERRY=34225,XMAS=7396,TO=81,ALL=900
但是我写的这个程序输出时发生了错误,错误提示是sqrt:DOMAIN error
Floating point error: Domain.
Abnoemal program termination.
这到底是怎么回事啊?我把double a1,b1,b2,c1,c2,d1,d2,e1,e2;换成long int a1,b1,b2,c1,c2,d1,d2,e1,e2;也是不行啊?求高手帮忙解答一下,帮我改好运行一下,看能不能得到正确的结果!!!感激不尽!!!