- /*
- 父亲将2520个桔子分给六个儿子。分完后父亲说:
- "老大将分给你的桔子的1/8分给老二;
- 老二拿到后连同原先的桔子分1/7给老三;
- 老三拿到后连同原先的桔子分1/6给老四;
- 老四拿到后连同原先的桔子分1/5给老五;
- 老五拿到后连同原先的桔子分1/4给老六;
- 老六拿到后连同原先的桔子分1/3给老大"。
- 在分桔子的过程中并不存在分得分数个桔子的情形,
- 结果大家手中的桔子正好一样多。问六兄弟原来手中各有多少桔子。
- */
- #include <stdio.h>
- #include <stdlib.h>
- #define JUZI_ZONGSHU 2520
- #define FENSHU 6
- #define XD1_XD2 8
- #define XD2_XD3 7
- #define XD3_XD4 6
- #define XD4_XD5 5
- #define XD5_XD6 4
- #define XD6_XD1 3
- int main( void )
- {
- int xd1 , xd2 , xd3 , xd4 , xd5 , xd6 ;//诸兄弟的桔子数
-
- //结果大家手中的桔子正好一样多
- xd1
- = xd2
- = xd3
- = xd4
- = xd5
- = xd6
- = JUZI_ZONGSHU / FENSHU ;
-
- //老六分给老大之前
- xd6 = xd6 / ( XD6_XD1 - 1 ) * XD6_XD1 ;
- xd1 -= xd6 / XD6_XD1 ;
- //老五分给老六之前
- xd5 = xd5 / ( XD5_XD6 - 1 ) * XD5_XD6 ;
- xd6 -= xd5 / XD5_XD6 ;
- //老四分给老五之前
- xd4 = xd4 / ( XD4_XD5 - 1 ) * XD4_XD5 ;
- xd5 -= xd4 / XD4_XD5 ;
- //老三分给老四之前
- xd3 = xd3 / ( XD3_XD4 - 1 ) * XD3_XD4 ;
- xd4 -= xd3 / XD3_XD4 ;
-
- //老二分给老三之前
- xd2 = xd2 / ( XD2_XD3 - 1 ) * XD2_XD3 ;
- xd3 -= xd2 / XD2_XD3 ;
- //老大分给老二之前
- xd1 = xd1 / ( XD1_XD2 - 1 ) * XD1_XD2 ;
- xd2 -= xd1 / XD1_XD2 ;
- printf("六兄弟原来手中的桔子数分别为:");
- printf("%d %d %d %d %d %d\n" ,
- xd1 , xd2 , xd3 , xd4 , xd5 , xd6 );
-
-
- system("PAUSE");
- return 0;
- }
初学者往往一个字符一个字符地写代码,不仅效率低,而且容易出错。应该学会高效且不容易出错地编辑代码。
以本题中的代码为例:
//老六分给老大之前
xd6 = xd6 / ( XD6_XD1 - 1 ) * XD6_XD1 ;
xd1 -= xd6 / XD6_XD1 ;
红色的标识符均应通过"复制"、"粘贴"的办法完成。这种方法不容易出错,而且效率也高。
“//老五分给老六之前”之后的两行代码应该通过复制前面两行代码之后,通过“查找”、“替换”或"复制"、"粘贴"的办法完成。以后诸行代码同样应该依法炮制。
一定要改掉逐个字符编辑代码的习惯。
阅读(1758) | 评论(1) | 转发(1) |