東海大學

#新手 #請益 #c語言

6月18日 12:04
新手剛學程式😥不好意思 我想請問哪個部分有問題,為什麼編譯的時候輸入-1沒有停止迴圈呀?但是如果少了函數輸入-1就能停止 這題我是要求偶數陣列減奇數陣列 謝謝各位了🙏
1
回應 13
文章資訊
共 13 則留言
不管有沒有加 func() 你的 break 並不會被影響到 輸入 -1 肯定是有成功跳出來的 你的程式是卡在 func() 裡面的 for 迴圈的無限循環 j + 2 要改成 j += 2 否則 j 不會被改變到 另外 建議不要濫用全域變數 否則程式邏輯很容易混亂
國立中央大學 資訊工程學系
看起來會跳出迴圈才對 不知道原PO是用哪一款IDE? 或許可以打斷點然後一行一行執行看看哪裡出錯了?
原 PO - 東海大學
B1 謝謝你🥺可以了耶 我以為有寫j<=i就不會陷入無窮迴圈
原 PO - 東海大學
B2 謝謝你🙏我找到原因了!!
B3 主要是因為 j + 2 這個式子不會更改 j 的值 所以不管跑幾次回圈 j 永遠都還是 0
國立臺灣科技大學
B3 為什麼少了函數輸入-1就能停止?
原 PO - 東海大學
B6 因為我的無窮迴圈是func()造成的
建議各位問問題之前 先滑一下其他人的回覆 說不定已經有人給出解答了喔🙂
國立臺灣科技大學
B7 但i加到100後, 跑完for 還是會跑到func啊
國立臺灣科技大學
B8 我知道func會讓程式不能停止 所以才問說 如果a不包含任何-1 當i>=100,也就是走完for迴圈後 還是會踩到func 這樣還是一樣會卡住啊
B10 所以說 這其實是原po的誤解 從頭到尾問題就是出在 func() 跟輸入 -1 跳不跳出來一點關係也沒有
國立臺灣科技大學
B11 瞭解
除了j+2程式輸入元素小於1個都有問題。 輸入0個元素 a[0] 被誤判成 -1 ,然後你的 算odd 那迴圈會葛屁。 輸入1個元素 a[1] 被誤判成 -1 ,但事實上你的-1代表的是陣列結束點,而不是odd 陣列的值。 嚴謹一些 i<2 func 開頭就可以直接放些error message 並return了。 另外你也已經用-1代表結束點了,所以func 也可以直接用 a[?] ==-1 來判斷迴圈跳出的依據。 其實1個迴圈也可以達成,雖然效能一樣但可以省一些code size,你可以想像看~ 未來寫MCU 對code size 可是斤斤計較的呢! 好習慣要重一開始培養XD~