C趣味程序百例(18)1~9分成1:2:3的三个3位数

文章作者 100test 发表时间 2007:03:10 17:30:55
来源 100Test.Com百考试题网


60.1~9分成1:2:3的三个3位数
将1到9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍。问应当怎样分法。
*问题分析与算法设计
问题中的三个数之间是有数学关系的,实际上只要确定第一个三位数就可以解决问题。
试探第一个三位数之后,计算出另外两个数,将其分别分解成三位数字,进行判断后确定所试探的数是否就是答案。
需要提醒的是:试探的初值可以是123,最大值是333。因为不可能超出该范围。
*程序与程序设计
#include
int ok(int t,int *z).
int a[9].
void main()
{
int m,count=0.
for(m=123.m<=333.m ) /*试探可能的三位数*/
if(ok(m,a)&.&.ok(2*m,a 3)&.&.ok(3*m,a 6)) /*若满足题意*/
printf("No.%d: %d %d %d\n", count,m,2*m,3*m). /*输出结果*/
}

int ok(int t,int *z) /*分解t的值,将其存入z指向的三个数组元素,若满足要求返回1*/
{
int *p1,*p2.
for(p1=z.p1 {
*p1=t. /*分解整数*/
t/=10.
for(p2=a.p2 if(*p1==0||*p2==*p1)return 0. /*若重复则返回*/
}
return 1. /*否则返回1*/
}
*运行结果
No.1:192 384 576
No.2:219 438 657
No.3:273 546 819
No.4:327 654 981
*思考题
求出所有可能的以下形式的算式,每个算式中有九个数位,正好用尽1到9这九个数字。
1)○○○ ○○○=○○○ (共有168种可能的组合)
2)○×○○○○=○○○○ (共有2种可能的组合)
3)○○×○○○=○○○○ (共有7种可能的组合)
4)○×○○○=○○×○○○ (共有13种可能的组合)
5)○×○○○=○×○○○○ (共有28种可能的组合)
6)○○×○○=○×○○○○ (共有7种可能的组合)
7)○○×○○=○○×○○○ (共有11种可能的组合)

相关文章


计算机等级考试二级ACCESS模拟试题
C趣味程序百例(18)1~9分成1:2:3的三个3位数
考试中如何既准确又迅速
如何合理分配答题时间
C趣味程序百例(18)填表格
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛