輔仁大學

#請益 為什麼這支程式會無限迴圈?

2021年8月31日 12:45
各位午安, 最近小弟在初學C語言, 有碰到一個問題, 想請問各位高手幫我解惑。 下列的程式,為什麼會無限迴圈? #include<stdio.h> int main( void ){ printf(Enter the number : "); int num; scanf("$d", &num); while ( num <= 100 ){ num = 3 * num; printf("Now the number is %d\n", num); } } 不好意思,我沒有將問題敘述清除。 我輸入30。
9
留言 21
文章資訊
Logo
每天有 6 則貼文
共 21 則留言
長庚大學
為什麼是 $d ? 然後問問題記得 output 放一下 這題如果你輸入負數的話 明顯就會無限迴圈啦 你輸入啥?
原 PO - 輔仁大學
B1 你好 %d,是十進位制整數,請問可以嗎? 不好意思,我初學,如果觀念錯誤,請您糾正。
長庚大學
B2 你的程式碼裡面寫的是是 $d 不是 %d 不一樣喔😃 無限迴圈的理由是因為 你的 scanf 根本就失敗了 num 裡面還是 0
原 PO - 輔仁大學
感謝您,原來是自己粗心大意
維諾納州立大學
竟然沒報錯🤣
國立成功大學
這樣num不是沒給初值嗎 為什麼還會輸出0
明志科技大學 電子工程系
num+=1; 這樣就沒問題了
國立中央大學
我想知道$d為什麼會沒報錯@@
長庚大學
B6 剛好記憶體殘值是0吧
國立中正大學
有些 OS 為了安全性會在程式執行前把全部記憶體 init 為 0
國立雲林科技大學 資訊工程系
因為while是執行迴圈的條件 你根本沒有條件能脫離迴圈
國立虎尾科技大學
弘光科技大學
while裡面 要加if去判斷num是不是等於0就braak 例如 while{ if(num ==0) break; 實作 } 0進去就出不來了 0乘任何數都是0 造成無限迴圈的點 感謝b16指正 原本講錯了 裡面要做等於0就強制跳出迴圈 避免造成無限迴圈
國立中央大學
嗯⋯下次可以自己找問題 在可疑的地方或變數 設中斷點 看對應變數的值 或是輸出出來 都可以幫助你釐清問題
國立清華大學
0乘1等於0 是因為0乘以任何數都是0 還是因為1乘以任何數都還是原本的數
國立政治大學
B13 他while的條件就有設好了幹嘛裡面還if break
國立臺北科技大學
B15 都是
國立雲林科技大學 資訊工程系
B16看來他的想法是 while (true) { if(...){ break; } else{ ... } }
長庚大學
B18 這種狀況的話 else 可以去掉比較好喔 可讀性會比較高 有點類似 early return 的概念 畢竟 else 加不加沒有差別 太多縮排容易造成閱讀困難
元智大學
這看起來是輸入失敗吧 在輸入30的狀況下loop是可以的 怎麼很多人說要if break呢 while裡面本身就是一個if 跳出 的概念啊
國立虎尾科技大學
你是不是寫PHP寫習慣了