注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

编程学习

我的网上家园

 
 
 

日志

 
 

一道数学题的另一种编程解决方案 C源码(有点小复杂)  

2013-05-18 21:45:55|  分类: C学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
有一道数学题,题目是这样的:
用 1、2、3、4、5、6、7、8、9九个数字组成三个三位数(每个数字只能用一次),使第二个数是第一个数的2倍,第三个数是第一个数的3倍.请你写出这三个数.

下面是另一种解决方案: (源程序来自于QQ网友 Ck_wizard ,还是不公布QQ号了)

解决思路是 需要两个子函数
第一个子函数用于判断一个三位数的三个数字是否相同,是否有0出现,如果有0出现,或者有重复数字,返回0
第二个子函数用于判断两个三位数的数字是否重复,如果有重复,返回0

定义一个可保存3个整数的数组

从100开始循环判断,循环执行条件是小于1000/3(第三个数是第一个数的3倍)
第一个判断条件是第1个数的每一位不相同,并且不能出现0,当条件满足时,把数值保存到数组的第一个位置,继续进行第二个条件判断,第二个条件判断是 第二个数的每个数不相同并且不能出现0,还要同时满足不能跟第一个数的数字重复,这时候保存第二个数到数组的第二个位置,继续第三个条件判断,第三个条件判断更复杂,第三个数的每个数不相同并且不能出现0,同时第三个数不能跟第一个数的数字有重复,也不能跟第二个数的数字有重复,条件满足时,把数值保存到数组的第三个位置,同时打印这三个数.



/* Note:Your choice is C IDE */
#include "stdio.h"
/*需要一个判断三位数是否重复的函数*/
/*还需要一个比较三个数数字是否相同的函数*/
#define TOP 1000
int judge( int line );
int alikejudge( int , int );

main()
{
int result, line, sum[3] = { 0, 0, 0};
for( line = 100; line < TOP/3; line++ )
if( judge( line ) != 0 ) {
sum[0] = line;
if( judge( line*2 ) && alikejudge( sum[0], line*2 ) ) {
sum[1] = line * 2;
if( judge( line*3 ) && alikejudge( sum[0], line*3 ) && alikejudge( sum[1], line*3 ) ) {
sum[2] = line * 3;
printf( "%4d%4d%4d\n", sum[0], sum[1], sum[2] );
}
}
}
return 0;
}

int judge( int line )
{
int a0, a1, a2;
a0 = line / 100;
a1 = line / 10 % 10;
a2 = line % 10;
if( a0 == a1 || a0 == a2 || a1 == a2 )
return 0;
return line;
}

int alikejudge( int line0, int line1 )
{
int one[3], two[3];
int i, j;
one[0] = line0 / 100;
one[1] = line0 / 10 % 10;
one[2] = line0 % 10;
two[0] = line1 / 100;
two[1] = line1 / 10 % 10;
two[2] = line1 % 10;
for( i = 0; i < 3; i++ )
for( j = 0; j < 3; j++ ) 
if( one[i] == two[j] )
return 0;
return i;    
}
  评论这张
 
阅读(29)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017