[問題] if的簡單問題

看板C_and_CPP (C/C++)作者 (老牧師4ni)時間7年前 (2018/05/24 18:01), 7年前編輯推噓7(7013)
留言20則, 10人參與, 7年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vs2017 c++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 輸入第一筆成績沒有顯示想對應的英文 餵入的資料(Input): 預期的正確結果(Expected Output): 輸入一筆成績會直接顯示相對應的英文 錯誤結果(Wrong Output): 輸入第一筆資料沒有直接輸出相對應的英文 而是要輸入第2筆才會有第1筆資料的對應英文 以此類推 輸入第11筆資料時才會出現第10筆資料相對應的英文 https://imgur.com/a/4LRVa0d 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 附上CODE網頁:https://ideone.com/p5nWHO int main() { int count=0, counta=0, countb=0, countc=0; int score; start: printf("輸入成績:"); scanf_s("%d\n", &score); if (score > 75) { printf("成績為A\n"); counta++; } else if (score > 60) { printf("成績為B\n"); countb++; } else { printf("成績為C\n"); countc++; } count++; if (count < 10) goto start; printf("目前有%d位的成績\n", count); printf("有%d位的成績為A\n", counta); printf("有%d位的成績為B\n", countb); printf("有%d位的成績為C\n", countc); system("pause"); return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.198.43.145 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1527156093.A.B95.html ※ 編輯: louisshih (60.198.43.145), 05/24/2018 18:06:50

05/24 18:11, 7年前 , 1F
05/24 18:11, 1F

05/24 18:46, 7年前 , 2F
我把scanf_s的換行刪掉就有了
05/24 18:46, 2F

05/24 18:53, 7年前 , 3F
沒事別隨便goto
05/24 18:53, 3F

05/24 19:58, 7年前 , 4F
是目前自學學到goto
05/24 19:58, 4F

05/24 20:00, 7年前 , 5F
除了寫OS code外 盡量少用goto
05/24 20:00, 5F

05/25 00:16, 7年前 , 6F
如果各function拆的夠乾淨,用goto也不會不好
05/25 00:16, 6F

05/25 00:17, 7年前 , 7F
而且goto在處理err handling時,有時候可以讓code更漂亮
05/25 00:17, 7F

05/25 08:43, 7年前 , 8F
沒必要用goto
05/25 08:43, 8F

05/25 11:07, 7年前 , 9F
看不出來他哪裡有拆function或者處理err handling
05/25 11:07, 9F

05/25 12:09, 7年前 , 10F
我只是回前面有人說不要用goto啦,當然原po這樣的用法是
05/25 12:09, 10F

05/25 12:09, 7年前 , 11F
絕對不恰當的
05/25 12:09, 11F

05/25 14:26, 7年前 , 12F
用 goto 比較好的狀況非常之少,雖然也是有些經典例子
05/25 14:26, 12F

05/25 14:27, 7年前 , 13F
在本文中用 do-while 迴圈取代 goto 會更美麗
05/25 14:27, 13F

05/25 14:28, 7年前 , 14F
我看到這樣寫感覺跟看到蟑螂在桌上爬一樣不舒服........
05/25 14:28, 14F

05/25 14:29, 7年前 , 15F
因為 do-while 會強迫分層次結構,goto 不需要層次任你
05/25 14:29, 15F

05/25 14:29, 7年前 , 16F
胡亂交叉流程,很容易出事,所以經驗叫我直覺避開 goto
05/25 14:29, 16F

05/25 21:02, 7年前 , 17F
初學者別用goto就對了,講一堆通常只會讓他們混亂
05/25 21:02, 17F

05/25 21:02, 7年前 , 18F
當他們經驗豐富到足夠理解為什麼不能用goto之後,就可
05/25 21:02, 18F

05/25 21:03, 7年前 , 19F
以開始考慮使用goto了
05/25 21:03, 19F

05/26 09:28, 7年前 , 20F
少用goto,尤其是剛學的時候
05/26 09:28, 20F
文章代碼(AID): #1R1erzkL (C_and_CPP)
文章代碼(AID): #1R1erzkL (C_and_CPP)