回覆列表
  • 1 # 使用者460330144626

    首先,這個程式碼本身基本是沒有問題的;

    我為之進行了測試:

    那麼你的程式碼為何不能正確執行呢, 在你的scanf中讀取的內容是一個整數a,然後一個英文半形逗號,然後一個整數b,然後一個英文半形逗號,最後一個整數c;

    你在測試執行的時候提供的輸入值是什麼呢, 是一個整數a, 一箇中文逗號, 在此時, 你需要了解一下scanf的讀取機制, 在你電腦的緩衝區中, 的確儲存了你的輸入, 是整數a, 然後一箇中文逗號, 然後整數b,一箇中文逗號, 最後一個整數c; scanf在從緩衝區讀取你的輸入的時候, 首先接受到了第一個數字a, 將其讀入了記憶體中把a賦值為a; 但是之後scanf讀到了一箇中文逗號, 這與你的格式化讀入英文半形逗號並不相符, 所以scanf會自動跳過你後面的讀入, 直接執行後面的語句, 所以你的錯誤中, 只讀取到了第一個數值13;

    此外, scanf的返回值會返回一個整數表示scanf函式成功讀取的變數個數, 你可以自己嘗試一下輸出你的scanf的返回值, 你的測試中可能返回值是1;

    瞭解了問題的原因之後, 如何改正也就顯而易見了, 程式碼可以保持原樣, 只需要在測試執行的時候間隔符輸入英文半形逗號即可;

    此外, 給你提供2個小建議!

    1.你的bett函式最好能放在main函式上面定義, 或者使用原型宣告, 否則在有的編譯器中可能會報錯, 之所以你執行正常可能是因為你的gcc預設支援了implicit function declaration功能, 如果你的bett函式返回值是float或者double可能就不行了;

    2.在放出程式碼請其他人幫助debug的時候, 最好要闡明自己為了解決問題而做出的努力, 而不是僅丟擲問題; 而且您這樣用手機直接拍螢幕的方式非常不優雅, 不利於他人閱讀你的程式碼, 也不利於他人除錯你的程式碼, 沒有人會願意看著你並不清楚的圖片一行行敲和你一樣的程式碼; 我推薦一個較好的姿勢可以是這樣:

    option1. 在知乎中直接插入程式碼塊 像這樣:

    option2. 將程式碼貼上至paste.ubuntu 之後給出程式碼連結 然後貼出程式碼截圖,方便他人除錯你的程式碼;

  • 中秋節和大豐收的關聯?
  • 宇宙中有沒有以矽基為主的生命,如果有,是否比碳基的生命更高階?