看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《umi74 (Kick-Ass)》之銘言: : 剛學C語言 遇到滿多困難 有請高手幫忙一下@@ : 輸入N筆資料 0=<N<=10 的總和 可是我只能一次打10個 : 不然會出現錯誤 請問怎麼解決呢 附上我的原始碼 : int a,b,c,d,e,f,g,h,i,j,x; : scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); : x=a+b+c+d+e+f+g+h+i+j; : printf("總和=%d",x); : 還有怎麼找這10個數字的最大值呢 @@ : 有規定這10個數不能大於100  給貓用不負責教學 01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main() 05 { 06 int i = 0, 07 j = 0, 08 k = 0, 09 l = 0, 10 m = 0; 11 12 printf("請輸入要幾組數字:"); 13 scanf("%d", &i); 14 for(j = 1; j <= i; j++) 15 { 16 Keyin: 17 printf("請輸入第%d組數字:", j); 18 scanf("%d", &k); 19 if(k >= 100) 20 { 21 printf("誰叫你輸入大於100的數字呀,給我重來\n"); 22 goto Keyin; 23 } 24 if(k > l) 26 { 27 l = k; 28 } 29 m = m + k; 30 31 } 32 printf("\n請輸入數字總和:%d\n", m); 33 printf("請輸入數字最大為:%d", l); 34 return 0; 35 } 結果 http://thumbsnap.com/HcSF6Um3 06~10 為變數宣告,這不用說明吧 12 顯示訊息 13 取得鍵盤輸入的資料i 14 以鍵盤取得的資料i 來與j 變數比較,如果j的數字等於所輸入的變數 則跳出回圈 16和22這兩行是一組的,學校老師最痛恨的東西,至於為什麼痛恨,很多老師根本說不清楚, 大概是他的老師也痛恨所以他跟著痛恨吧(不過如果發展過中大型程式的就知道) 19~23 是判斷輸入的數字是不是大於等於100,如果是強制跳回16行開始執行 24~28 判斷所輸入的數字是不是比L 大,是的話把數字放入L。而L 一開始為0 29 做累加計算 32~33 顯示累加結果和L 的數字 上面的程式如果你要背下來應付考試不是不行 但試著理解會比較好一點,程式是有邏輯性可以用流程歸納出來 除了goto可能沒學過外,剩下的應該都已經學到了(11月了差不多) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.119.110
tabinoyume:我從來沒學過goto 10/31 22:28
tabinoyume:這裡應該可以用continue 10/31 22:29
kikiqqp:哎呀 有錯字 算了..... 10/31 22:39
kikiqqp:continue就必須考慮到中斷迴圈後,使用者就不能對輸入錯誤 10/31 22:40
kikiqqp:做任何反悔嗎? 這在介面設計上是很重要必須考慮到的 10/31 22:41
kikiqqp:另外 使用GOTO在這邊在對不懂的人規劃流程圖上會簡易很多 10/31 22:41
kikiqqp:雖然很多人視為毒蛇猛獸 XD 10/31 22:43
tropical72:可以改用 (--i<0)?i=0:NULL; 這種方式? 10/31 22:44
tropical72:goto 我有時常用在 END: 裡面就是了. 不然突然有3.4個 10/31 22:45
tropical72:loop 要慢慢跳出去感覺就很麻煩. 10/31 22:45
otira:可以 j-- 然後做continue 10/31 22:53
antiasus:goto喔...雖然不是不能,使用上還是謹慎些. 10/31 23:20
LPH66:的確 這個想法的程式若是新手可能真得 goto 才好寫 10/31 23:57
LPH66:不過仔細想想後會發現它可以寫成do/while 10/31 23:57
LPH66:只要對迴圈結構有進一步的了解 發現這一點並不難 10/31 23:58
james732:我同意這篇的看法,不過該文的原po連路都還不會走 XD 10/31 23:58
tropical72:小改一下,這樣應該蠻適合原po的吧 http://ppt.cc/~ywY 11/01 00:17
loveme00835:用EOF當標兵的作法, 一般while的章節都會有吧, 可以 11/01 00:24
loveme00835:省一些判斷, 也只需要一個 continue 11/01 00:25
tropical72:搭if-else,事實上可以不用continue 11/01 00:37
loveme00835:如果要作範圍內的測試, 要做的事情很多, if 結構會變 11/01 01:11
loveme00835:的很大, 通常這樣的寫作風格是「一個結束點」, 只會徒 11/01 01:12
loveme00835:增括號數跟提升維護困難度 11/01 01:14