【求助】 帮我看看,哪里出问题了!
原题目如下:一位商人有4块砝码,都是整数,重量不同,砝码在天平上可以称出任意1~40间的重量(砝码可以放在天平的任意一端),请问这四块砝码的重量各是多少?
我写的代码如下:
程序代码:
#include<stdio.h>
int fuction(int i,int j,int k,int l);
int main()
{
int i,j,k,l;
int flag=0;
for(i=1;i<=40;i++)
for(j=1;j<=40;j++)
for(k=1;k<=40;k++)
for(l=1;l<=40;l++);
{
if(i!=k && k!=j && j!=l && l=i)
{
flag=fuction(int i,int j,int k,int l);
if(flag)
printf("%d\t%d\t%d\t%d\n",i,j,k,l);
}
}
return 0;
}
int fuction(int i,int j,int k,int l)
{
int x;
for(x=1;x<=40;x++)
{
int a,b,c,d,e,f,g,h;
int flag;
/*所有物体都不放在物体的一端时*/
a=( (i==x) || (j==x) || (k==x) || (l==x) );
b=( (i+j==x) || (j+k==x) || (k+l==x) || (l+i==x) );
c=( (i+j+k==x)|| (j+k+l==x) || (k+l+i==x) );
d=( (i+j+k+l==x) );
/*部分砝码放在物体一端时*/
e=( (i-j==x) || (j-k==x) || (k-l==x) (l-i)==x);
f=( (i+j+k-l==x) || (j+k+l-i==x) || (k+l+i-j==x) || (l+i+j-k==x));
g=( (i+j-k==x) || (i+j-l==x) || (i+k-j==x) || (i+k-l==x) || (i+l-k==x) || (i+l-j==x) ||
(j+k-l==x) || (j+k-i==x) || (j+l-k==x) || (j+l-k==x) ||
(k+l-i==x) || (k+l-j==x) );
h=( (i+j-k-l==x) || (k+l-i-j==x) || (i+k-j-l==x) || (j+l-i-k=x) ||
(i+l-k-j==x) || (k+j-i-l==x) );
flag=a+b+c+d+e+f+g+h;
if(flag==0)
return 0;
}
return 1;
}
/*******注意哦**********
记得帮我挑出错误就可以了,别给我发其他的程序了,因为我已经找到答案了
谢谢啦!
这四块砝码的重量分别是1、3、9、27
**************************
[ 本帖最后由 thlgood 于 2011-3-1 12:27 编辑 ]









那么长啊