C趣味程序百例(18)1~9分成1:2:3的三个3位数
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;If (OK (m,a)&&OK (2 * m,a+3)&&OK (3 * m,a+6))/*如果满足问题的含义*/[br/] printf("编号%d:% d% d% d \ n") /*输出结果*/
}
OK (int t,int * z)/*分解t的值,存放在z指向的三个数组元素中,如果符合要求,则返回1*/
{
int *p1,* p2
for(P1 = z;P1 {
* P1 = t % 10;/*分解整数*/
t/= 10;
for(p2 = a;p2 if(*p1==0||*p2==*p1)返回0;/*如果重复,则返回*/
}
返回1;/*否则返回1*/
}
*运行结果
第1号:192 384 576
第2号:219 438 657
第3号:273 546 819
1)○○○○○○○○○○○○○○○○○9○○○
0条评论