Chinaunix首页 | 论坛 | 博客
  • 博客访问: 229355
  • 博文数量: 39
  • 博客积分: 1130
  • 博客等级: 少尉
  • 技术积分: 453
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-26 15:54
文章分类

全部博文(39)

文章存档

2012年(1)

2011年(31)

2010年(7)

分类: C/C++

2011-05-29 20:33:30

  1. /*
  2. 父亲将2520个桔子分给六个儿子。分完后父亲说:
  3. "老大将分给你的桔子的1/8分给老二;
  4. 老二拿到后连同原先的桔子分1/7给老三;
  5. 老三拿到后连同原先的桔子分1/6给老四;
  6. 老四拿到后连同原先的桔子分1/5给老五;
  7. 老五拿到后连同原先的桔子分1/4给老六;
  8. 老六拿到后连同原先的桔子分1/3给老大"。
  9. 在分桔子的过程中并不存在分得分数个桔子的情形,
  10. 结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子。
  11. */
  12. #include <stdio.h>
  13. #include <stdlib.h>

  14. #define JUZI_ZONGSHU 2520
  15. #define FENSHU 6

  16. #define XD1_XD2 8
  17. #define XD2_XD3 7
  18. #define XD3_XD4 6
  19. #define XD4_XD5 5
  20. #define XD5_XD6 4
  21. #define XD6_XD1 3

  22. int main( void )
  23. {
  24.   int xd1 , xd2 , xd3 , xd4 , xd5 , xd6 ;//诸兄弟的桔子数
  25.   
  26.   //结果大家手中的桔子正好一样多
  27.     xd1
  28.   = xd2
  29.   = xd3
  30.   = xd4
  31.   = xd5
  32.   = xd6
  33.   = JUZI_ZONGSHU / FENSHU ;
  34.   
  35.   //老六分给老大之前
  36.   xd6 = xd6 / ( XD6_XD1 - 1 ) * XD6_XD1 ;
  37.   xd1 -= xd6 / XD6_XD1 ;

  38.   //老五分给老六之前
  39.   xd5 = xd5 / ( XD5_XD6 - 1 ) * XD5_XD6 ;
  40.   xd6 -= xd5 / XD5_XD6 ;

  41.   //老四分给老五之前
  42.   xd4 = xd4 / ( XD4_XD5 - 1 ) * XD4_XD5 ;
  43.   xd5 -= xd4 / XD4_XD5 ;

  44.   //老三分给老四之前
  45.   xd3 = xd3 / ( XD3_XD4 - 1 ) * XD3_XD4 ;
  46.   xd4 -= xd3 / XD3_XD4 ;
  47.   
  48.   //老二分给老三之前
  49.   xd2 = xd2 / ( XD2_XD3 - 1 ) * XD2_XD3 ;
  50.   xd3 -= xd2 / XD2_XD3 ;

  51.   //老大分给老二之前
  52.   xd1 = xd1 / ( XD1_XD2 - 1 ) * XD1_XD2 ;
  53.   xd2 -= xd1 / XD1_XD2 ;


  54.   printf("六兄弟原来手中的桔子数分别为:");
  55.   printf("%d %d %d %d %d %d\n" ,
  56.           xd1 , xd2 , xd3 , xd4 , xd5 , xd6 );
  57.   
  58.   
  59.   system("PAUSE");    
  60.   return 0;
  61. }
    初学者往往一个字符一个字符地写代码,不仅效率低,而且容易出错。应该学会高效且不容易出错地编辑代码。
    以本题中的代码为例:
    //老六分给老大之前
    xd6xd6 / ( XD6_XD1 - 1 ) * XD6_XD1 ;
    xd1 -= xd6 / XD6_XD1 ;
    红色的标识符均应通过"复制"、"粘贴"的办法完成。这种方法不容易出错,而且效率也高。
    “//老五分给老六之前”之后的两行代码应该通过复制前面两行代码之后,通过“查找”、“替换”或"复制"、"粘贴"的办法完成。以后诸行代码同样应该依法炮制。
     一定要改掉逐个字符编辑代码的习惯。     
阅读(1758) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

c_eng_young2012-12-27 10:50:21

不是很明白的话,可以再参考一下这种思路:
每个人的.全部分完后的桔子数 =  原来的桔子数 + 得到的 - 分出去的 = 2520/6
原来的桔子数是我们要求的,所以整理一下式子:
       原来的桔子数 = 全分完后的桔子数 - 得到的 + 分出去的
ps: 老大 跟 其它人 得到 和 分出 的顺序 不一样 ,所以要 单独考虑.
先求 老大 原来的桔子数..略.
再来看 剩下的人:
       设 a1-a6 表示 六兄弟, 全部分完后,也就是平均数 =  2520/6 .
                a6原来的桔子数 = 平均 - (得到)  + (分出)
得到:
老六得到的是 老五得到后分出的