[問題] if的簡單問題

作者: louisshih (老牧師4ni)   2018-05-24 18:01:29
開發平台(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):
作者: stimim (qqaa)   2018-05-24 18:11:00
作者: louisshih (老牧師4ni)   2018-05-24 18:46:00
我把scanf_s的換行刪掉就有了
作者: jerryh001   2018-05-24 18:53:00
沒事別隨便goto
作者: louisshih (老牧師4ni)   2018-05-24 19:58:00
是目前自學學到goto
作者: wawi2 (@@)   2018-05-24 20:00:00
除了寫OS code外 盡量少用goto
作者: boss0405 (boss)   2018-05-25 00:16:00
如果各function拆的夠乾淨,用goto也不會不好而且goto在處理err handling時,有時候可以讓code更漂亮
作者: bluesoul (忙死你老爸)   2018-05-25 08:43:00
沒必要用goto
作者: MOONRAKER (㊣牛鶴鰻毛人)   2018-05-25 11:07:00
看不出來他哪裡有拆function或者處理err handling
作者: boss0405 (boss)   2018-05-25 12:09:00
我只是回前面有人說不要用goto啦,當然原po這樣的用法是絕對不恰當的
作者: Schottky (順風相送)   2018-05-25 14:26:00
用 goto 比較好的狀況非常之少,雖然也是有些經典例子在本文中用 do-while 迴圈取代 goto 會更美麗我看到這樣寫感覺跟看到蟑螂在桌上爬一樣不舒服........因為 do-while 會強迫分層次結構,goto 不需要層次任你胡亂交叉流程,很容易出事,所以經驗叫我直覺避開 goto
作者: shadow0326 (非議)   2018-05-25 21:02:00
初學者別用goto就對了,講一堆通常只會讓他們混亂當他們經驗豐富到足夠理解為什麼不能用goto之後,就可以開始考慮使用goto了
作者: hotrain13 (最幸運的人!!)   2018-05-26 09:28:00
少用goto,尤其是剛學的時候

Links booklink

Contact Us: admin [ a t ] ucptt.com