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

C 語言遞迴將整數轉為字串,輸出錯誤的原因與修正

     編輯:程式設計綜合問答

使用遞迴方式將整數轉換為對應字串時,常見的錯誤在於數字位元的提取邏輯。例如輸入 1234 卻輸出 3334,通常是因為在迴圈中計算各位數字時,模運算與除法的順序或變數更新有誤。

錯誤分析

原始程式碼中,int_to_string 函數的迴圈使用 m = 10 並不斷乘 10,卻未正確配合 n 的變化來取出每一位數字,導致高位數字被重複或錯誤計算。

修正邏輯

較正確的做法是:

  1. 先決定字串長度 w,並設定字串結束符號 '\0'。
  2. 從個位開始,透過 n % 10 取得目前位數,轉換為字元後填入對應位置。
  3. 接著 n = n / 10,繼續處理下一位,直到所有位數處理完畢。
int i = 1, j = w - 1, m = 10;
c[w] = '\0';
for (; i <= w; i++) {
    c[j--] = (char)(n % m / (m / 10) + 48);
    m = m * 10;
}

這樣即可確保輸入 1234 時正確輸出 "1234",而不會出現重複數字的情況。

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