/*父親將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 3int 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 ; 紅色的標識符均應通過"複製"、"粘貼"的辦法完成。這種方法不容易出錯,而且效率也高。 “//老五分給老六之前”之後的兩行代碼應該通過複製前面兩行代碼之後,通過“尋找”、“替換”或"複製"、"粘貼"的辦法完成。以後諸行代碼同樣應該依法炮製。
一定要改掉逐個字元編輯代碼的習慣。