砝码程序验证---转自Yu.C的小站
来源:互联网 发布:asp档案管理系统源码 编辑:程序博客网 时间:2024/04/30 19:17
/**//*
* 英文名: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;
}
}
}
* 英文名: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;
}
}
}
- 砝码程序验证---转自Yu.C的小站
- 写代码的都他妈是诗人好吧?(转自 冷知识-人人小站)
- 早点搞掉毕业后把自己的小站制作成程序小站
- 破碎的砝码C语言代码
- Yu的博客
- YU
- 自C程序课程以来的感想
- 我的小站
- 欢迎光临我的小站
- 我的小站。
- 别人的小站
- 新的博客小站
- c语言称重砝码
- ASP.net 验证码(C#) 选择自 yangyifan0 的 Blog
- 小站
- C程序设计的抽象思维-递归过程-砝码称重
- 有用的正则验证,转自互联网
- C语言经典程序!!--------------------------转自C语言经典论坛
- 想看的书
- printk ##
- 2006年手机病毒及手机杀毒软件评测报告(1)
- 修改环境变量
- SQL Server 2005的版本
- 砝码程序验证---转自Yu.C的小站
- 用心编织美丽的未来
- c# 常用文件操作
- 美女间谍
- 软件架构的精髓:协作(Booch语)
- 看古人如何养颜:散落在历史中的美容秘方
- 参加软件水平考试
- 最短路径算法实现
- 多功能计算器