Re: [討論] 運用C語言撰寫前星法(forward star)程式

看板C_and_CPP (C/C++)作者 (今天下雨了嗎)時間11年前 (2014/12/08 22:30), 11年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《dbox90 (微風)》之銘言: : 如題,小弟利用C語言撰寫forward star(前星法)問題 : 因老闆要求需有兩種的寫法,小弟是用for迴圈寫成 : 不知是否能運用while 或 do 迴圈撰寫,懇請各位大大,給予指導 : 以下使小弟所撰寫的程式碼 ^^^^ : http://codepad.org/3P5NzZnF : 題目如下 : 1 2 6 : 1 4 3 : 2 3 2 : 2 6 1 : 2 5 2 : 3 6 3 : 4 5 1 : 5 2 3 : 5 6 5 : =================== : for((A)前置處理;(B)條件式;(C)迴圈變動) : { : . : (D)內容 : . : } : =================== : 替換成while : : (A) : while((B)) : { : (D) : (C) : } : : =================== : 替換成 do...while : : (A) : do : { : if((B)) break;\\這行是要避免do..while 先斬後奏的問題 : \\有可能在不符合條件式做 造成一些問題 : (D) : (C) : }while((B)); 這篇是小弟發文 站內信卻是"小女子"? 鄉民的性別真是難以捉摸 你的Code有三個部份的for迴圈 重點是只有單層 要替換一點都不難 =ˇ= 就女子心幫幫你 ================================= for(i=1; i<allink; i++) { scanf("%d %d %d", &k[i], &a[i], &c[i]); } for(i=1; i<allink; i++) { if(k[i] == k[i+1]) { b[i] = num; count++; } else if(k[i] <= k[allink-3]) { b[i] = num; num = b[i] + count; count = 1; } else { b[i] = num; } } for(i=1; i<allink; i++) { printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n", k[i], b[i], i,a[i], i, c[i]); } ============================================== while版本 i=1; while(i<allink) { scanf("%d %d %d", &k[i], &a[i], &c[i]); i++; } i=1; while(i<allink) { if(k[i] == k[i+1]) { b[i] = num; count++; } else if(k[i] <= k[allink-3]) { b[i] = num; num = b[i] + count; count = 1; } else { b[i] = num; } i++; } i=1; while(i<allink) { printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n", k[i], b[i], i,a[i], i, c[i]); i++; } ======================================= do....while 版本 i=1; do { if(i<allink) break; scanf("%d %d %d", &k[i], &a[i], &c[i]); i++; }while(i<allink); i=1; do { if(i<allink) break; if(k[i] == k[i+1]) { b[i] = num; count++; } else if(k[i] <= k[allink-3]) { b[i] = num; num = b[i] + count; count = 1; } else { b[i] = num; } i++; }while(i<allink); i=1; do { if(i<allink) break; printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n", k[i], b[i], i,a[i], i, c[i]); i++; }while(i<allink); ======================== 自己對照一下,不小心手打錯就請見諒了(挖鼻)。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.128.9 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1418049042.A.58B.html ※ 編輯: yyan1218 (118.166.128.9), 12/08/2014 22:56:55
文章代碼(AID): #1KXROIMB (C_and_CPP)
文章代碼(AID): #1KXROIMB (C_and_CPP)