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

C 語言輸入浮點數求平均:以 0 為終止條件修正邏輯錯誤

     編輯:程式設計綜合問答

原代碼用 if (num == 'Y') break; 比較 float 與字符常量,邏輯錯誤且無法觸發。正確做法:約定輸入 0 結束(或負數、特定標記),並修復循環結構。

修正代碼

#include <stdio.h>
int main(void) {
    float num, sum = 0, avg;
    int count = 0;
    printf("請輸入浮點數(輸入 0 結束):\n");
    while (1) {
        if (scanf("%f", &num) != 1) break; // 輸入失敗退出
        if (num == 0) break;               // 終止條件
        sum += num;
        count++;
    }
    if (count > 0) {
        avg = sum / count;
        printf("平均值為:%.2f\n", avg);
    } else {
        printf("未輸入有效數據。\n");
    }
    return 0;
}

關鍵修正

  • 終止條件改為 num == 0(浮點數比較 0 安全),或 num < 0 視業務而定。
  • 增加 scanf 返回值檢查,防非數字輸入導致死循環。
  • 輸出格式 %.2f 保留兩位小數,去除中文標點干擾。

進階:支援任意終止符

若必須用字符 'Y' 結束,需改用 char buf[32] 讀行,sscanf 解析,先判斷 strcmp(buf, "Y") == 0 再轉浮點數。

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