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

C 語言函數實現:提取長整型奇數位並逆序組合新數

     編輯:程式設計疑難解答

題目要求

編寫 long fun(long int x),將 x 中每一位上的奇數字符提取,逆序組成新數返回。例:123456789 → 97531。

算法思路

  1. 從低位向高位遍歷(x % 10 取末位)
  2. 判斷位數是否為奇數(digit % 2 == 1)
  3. 若是奇數,累加到結果:result = result * 10 + digit(自動實現逆序)
  4. x /= 10 繼續下一位

完整代碼


#include 

long fun(long int x) {
    long result = 0;
    while (x != 0) {
        int digit = x % 10;
        if (digit % 2 == 1) {          // 奇數位
            result = result * 10 + digit; // 逆序拼接
        }
        x /= 10;
    }
    return result;
}

int main() {
    long a, b;
    printf("Please input a long int num: ");
    scanf("%ld", &a);
    b = fun(a);
    printf("b=%ld\n", b);
    return 0;
}

測試用例

輸入輸出說明
12345678997531正常情況
246800無奇數位
1357997531全奇數位
-12345531負數處理(C 語言 % 可能為負,建議取絕對值)

邊界處理建議

  • 輸入為 0 或無奇數位 → 返回 0
  • 長整型溢出:題目未要求處理,實際項目中可用 long long 或字符串
  • 負數:建議開頭 x = x < 0 ? -x : x;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved