砝码程序验证---转自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语言实现电子邮件地址验证程序
- 验证daemon程序中setsid的作用以及重定向stdin、stdout、stderr的原因
- 微信小程序小工具之下发短信验证码倒计时
- 一个通用的表单验证程序
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号是否成对出现
- 发布一个很COOL的图片验证码程序[含源码]
- .Net一般处理程序来实现用户名的验证
- 微信小程序开发—(十四)表单验证2
- 一个功能强大的表单验证程序
- Android_Servlet验证的简单登录程序
- 关于我的UVM验证的第一个程序
- 华为机试题:密码验证合格程序
- 人为漏洞的构造和程序密码验证机制的突破
- adobe flash player installer 无法验证安装程序
- [INS-30131] 执行安装程序验证所需的初始设置失败
- 使程序在Linux下后台运行(验证可行)
- Java程序名验证是否是回文字符
- ABAP 程序中的用户权限验证
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。