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

C 語言獎金計算 printf 輸出為 0:格式化字串錯誤

     編輯:程式設計疑難解答

代碼:

float b1,b2,b4,b6,b10,b11,b;
...
printf("bonus=%ld", b); // 錯誤:%ld 對應 long,但 b 是 float

錯誤原因

  • %ld 期望 long int,傳入 float 導致未定義行為,輸出亂碼或 0。
  • 浮點數列印需用 %f(float/double)或 %lf(double)。

修正

// 選項 1:改用 double + %lf(建議)
double b1,b2,b4,b6,b10,b11,b;
...
printf("bonus=%lf\n", b);

// 選項 2:維持 float + %f
printf("bonus=%f\n", b);

完整修正版

int main() {
    long int i;
    double b1,b2,b4,b6,b10,b11,b;
    scanf("%ld", &i);
    b1 = i*0.1;
    b2 = b1 + (i-100000)*0.075;
    b4 = b2 + (i-200000)*0.05;
    b6 = b4 + (i-400000)*0.03;
    b10 = b6 + (i-600000)*0.015;
    b11 = b10 + (i-1000000)*0.01;
    if (i<=100000) b=b1;
    else if (i<=200000) b=b2;
    else if (i<=400000) b=b4;
    else if (i<=600000) b=b6;
    else if (i<=1000000) b=b10;
    else b=b11;
    printf("bonus=%lf\n", b);
    return 0;
}

「%ld 印 float」是 C 語言新手最常見的格式化錯誤之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved