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

C 語言 scanf 輸入 double 類型變量地址錯誤修正

     編輯:程式設計疑難解答

錯誤代碼

double pro;
scanf("%f", pro); // 兩個錯誤

錯誤分析

  1. 格式符錯誤:`double` 對應 `%lf`,`%f` 是 `float`。
  2. 缺少取地址符 `&`:`scanf` 需要變量地址來寫入值。

正確寫法

scanf("%lf", &pro);

完整修正後的 count 函數調用

int main() {
    double pro;
    printf("請輸入利潤: ");
    if (scanf("%lf", &pro) == 1) { // 檢查返回值確保讀取成功
        count(pro);
    } else {
        printf("輸入無效\\n");
    }
    return 0;
}

補充:獎金計算邏輯簡化

原代碼用陣列累加分段稅率,可改用結構體數組 + 循環,更清晰易維護:

struct Bracket { double limit; double rate; };
Bracket brackets[] = {
    {100000, 0.10}, {200000, 0.075}, {400000, 0.05},
    {600000, 0.03}, {1000000, 0.015}, {DBL_MAX, 0.01}
};
double bonus = 0, remaining = profit;
for (auto &b : brackets) {
    double taxable = fmin(remaining, b.limit);
    bonus += taxable * b.rate;
    remaining -= taxable;
    if (remaining <= 0) break;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved