作文名字的由来:一道C语言题

来源:百度文库 编辑:高校问答 时间:2024/04/29 20:24:58
一道C语言题:
已知X,Y,Z分别表示0~9的不同数字,X,Y,Z取何值时,XXXX+YYYY+ZZZZ=YXXXZ~
以下是我试着编的,谁知错在哪里:
main()
{
int x,y,z,m,n;
m=1000*(x+y+z)+100*(x+y+z)+10*(x+y+z)+(x+y+z);
n=10000*y+1000*x+100*x+10*x+z;
for(x=1;x<10;x++)
for(y=1;y<10&&(y!=x);y++)
for(z=1;z<10&&(z!=x)&&(z!=y);z++)
{
if(m==n)break;printf("x=%d,y=%d,z=%d",x,y,z);
}
getch();
}

see see it 吧
main()
{
int x,y,z,m,n;
char c;
for(x=0;x<10;x++)
for(y=0;y<10;y++)
for(z=0;z<10;z++)
{
m=1000*(x+y+z)+100*(x+y+z)+10*(x+y+z)+(x+y+z);
n=10000*y+1000*x+100*x+10*x+z;
if(m==n)
{printf("\n\tx=%d,y=%d,z=%d\n",x,y,z);}
}
c=getch();
}
答案是 x=9 y=1 z=8
9999+1111+8888=19998

使用以下的代码试一下,理论上是可以。

main()
{

for(x=0;x<10;x++)
for(y=0;y<10&&(y!=x);y++)
for(z=0;z<10&&(z!=x)&&(z!=y);z++)
{
m=1000*(x+y+z)+100*(x+y+z)+10*(x+y+z)+(x+y+z);
n=10000*y+1000*x+100*x+10*x+z;
if(m==n)break;
printf("x=%d,y=%d,z=%d",x,y,z);
}

getch();

}

for(x=0;x<10;x++)
for(y=0;y<10&&(y!=x);y++)
for(z=0;z<10&&(z!=x)&&(z!=y);z++)
试试

m=1000*(x+y+z)+100*(x+y+z)+10*(x+y+z)+(x+y+z);
n=10000*y+1000*x+100*x+10*x+z;
这两句要写在循环体里面,if判断的上面,for循环的条件也有错误,应该这样.
for(x=0;x<10;x++)
for(y=0;y<10;y++)
for(z=0;z<10;z++)

之后,删除if后面的"break;"这句.

X,Y,Z分别表示0~9,你怎么从1开始记数?