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

C 遞歸轉換整數為字符串:邏輯判斷錯誤導致位數計算失敗

     編輯:程式設計綜合問答

錯誤代碼片段

if (n > 9 && n < -9) // 錯誤:邏輯與應為邏輯或
{
    w = 0;
    while (n != 0) { n /= 10; w++; }
}

問題分析

n > 9 && n < -9 永遠為假(無數字同時大於 9 且小於 -9),導致位數 w 始終為 1,遞歸函數無法正確處理多位數。

修正

if (n > 9 || n < -9) // 正確:絕對值大於 9 才需計算位數
{
    w = 0;
    int temp = n; // 保留原值
    while (temp != 0) { temp /= 10; w++; }
}

更優雅的遞歸實現

void int_to_string(int n) {
    if (n < 0) { putchar('-'); n = -n; }
    if (n / 10) int_to_string(n / 10);
    putchar('0' + n % 10);
}

無需額外緩衝區,直接輸出,簡潔高效。

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