【求助】 帮我看看,哪里出问题了!
原题目如下:一位商人有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 编辑 ]