首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VS2012 C語言求二次方程根輸入格式導致結果錯誤

     編輯:程式設計疑難解答

問題現象

輸入 `1,5,6`(帶逗號),程序輸出 `107374176.000000, 0.000000`,預期為 `-2, -3`。

原因

`scanf("%f %f %f", &a, &b, &c)` 要求以空格、換行或制表符分隔輸入。輸入逗號導致 `scanf` 只讀取 `a=1`,`b`、`c` 讀取失敗保留棧上垃圾值,計算出異常結果。

正確輸入方式

運行程序,輸入:1 5 6(空格分隔)或分行輸入,再按 Enter。

驗證

在線編譯測試:codepad.org/3Wmr0j0p,輸出正確為 `-2.000000, -3.000000`。

建議

  • 代碼中添加輸入提示:`printf("請用空格分隔輸入 a b c:");`
  • 檢查 `scanf` 返回值:`if (scanf("%f %f %f", &a, &b, &c) != 3) { /* 錯誤處理 */ }`
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved