首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言溫度轉換:華氏轉攝氏與 scanf 陷阱 (\n 導致無限等待)

     編輯:關於C

公式

C = 5/9 * (F - 32)。注意 5/9 為整數除法 = 0,必須寫 5.0/9.0 或 5*(F-32)/9.0。

scanf 經典陷阱

scanf("%lf\n", &f); // 錯誤!格式字串含 \n

%lf\n 讀取 double 後,\n 會匹配並丟棄**任意數量**空白字元 (含換行、空格、Tab),導致程式持續等待非空白字元輸入,**看起來像死機**。

正確寫法

scanf("%lf", &f); // 讀取後自動跳過後續空白,留待下次讀取
// 或更健壯:
if (scanf("%lf", &f) != 1) { /* 輸入錯誤處理 */ }

完整程式

#include 
int main() {
    double f, c;
    printf("請輸入華氏溫度: ");
    if (scanf("%lf", &f) != 1) return 1;
    c = 5.0 * (f - 32) / 9.0; // 強制浮點運算
    printf("f=%.2f\nc=%.2f\n", f, c);
    return 0;
}

補充:攝氏轉華氏

f = c * 9.0 / 5.0 + 32;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved