学会编辑代码——《狂人C》习题解答4(第二章习题7)

1092阅读 0评论2011-10-11 A13433758072
分类:

  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 ;
    红色的标识符均应通过"复制"、"粘贴"的办法完成。这种方法不容易出错,而且效率也高。
    “//老五分给老六之前”之后的两行代码应该通过复制前面两行代码之后,通过“查找”、“替换”或"复制"、"粘贴"的办法完成。以后诸行代码同样应该依法炮制。
     一定要改掉逐个字符编辑代码的习惯。     
上一篇:FW:C中的宏处理
下一篇:没有了