您的位置:首页 > 其它

砝码程序验证---转自Yu.C的小站

2006-11-07 12:20 218 查看



/**//*


* 英文名:Alex.Yu 


* 中文名:放下


* QQ 名:Yu.C


* QQ 号:289257489 346596765 448534065


* 网 站:http://bbs.doloop.cn







* 有4个砝码,每个重量都是整克,总重量是40克,天平可以称出1~40克的物体,问这4个砝码各是多少克?





* 分析程序:


* 先假设4个砝码的重量分别是a,b,c,d;那么它们重量范围为1~40克,这样就调用循环语句,设能够称的克数为r,r必然是从1~40循环的;


* a和b有可能分别放在天平左边或右边(如a是克,c是3克,a和一个重量r为2克的东西放在左边,c放在右边),这样称出来的结果就是r = c - a,


* 所以我们再设置4个变量i,j,k,l,设置他们的3种可能左、中、右,也就是-1,0,1;再设置循环语句i从-1循环到1,建立验证函数Check;





* 要点说明


* 使用到了for和goto


* for循环有3个关键部件


* (1)循环条件--当求值为true时,循环体重新执行;


* (2)循环初始化--初始化循环时,参与循环条件的变量被初始化为适当值。此过程只在循环开始前发生一次;


* (3)循环更新--更新循环的条件变量。在每次循环时都重复进行更新;





* goto 语句将程序控制直接传递给标记语句


* (1)goto 的一个通常用法是将控制传递给特定的 switch-case 标签或 switch 语句中的默认标签。


* (2)goto 语句还用于跳出深嵌套循环。


*/




using System;


using System.Collections.Generic;


using System.Text;




namespace Yu.C.FaMa.App




...{


class FaMa




...{


static void Main(string[] args)




...{


int a, b, c, d;


for(a = 1;a < 40;a++)


for(b = 1;b < 40;b++)


for(c = 1;c < 40;c++)


for (d = 1; d < 40; d++) 




...{


if (a + b + c + d == 40)




...{


if(Check(a,b,c,d))




...{


Console.WriteLine("{0} {1} {2} {3}",a,b,c,d);


}


}


}


Console.WriteLine("结束");


Console.ReadLine();


}




static bool Check(int a, int b, int c, int d)




...{


int i, j, k, l;


i = j = k = l = 0;


for (int r = 1; r <= 40; r++)




...{


for(i = -1;i <= 1;i++)


for(j = -1;j <= 1;j++)


for(k = -1;k <= 1;k++)


for (l = -1; l <= 1; l++) 




...{


//如果可以称r重量,则直接跳出去称r+1的重量


if (a * i + b * j + c * k + d * l == r)


goto NextLoop; //goto到NextLoop标记


}


//如果不能称r重量,则说明失败,返回假


return false;


NextLoop: //goto标记语句


continue;


}


return true;


}


}


}



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c system string qq class