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

C/C++ 實現五位整數數字降序重組完整教程

     編輯:程式設計綜合問答

題目要求

輸入一個五位整數,將其五個數字按從大到小排序,組成新的五位整數輸出。要求使用函數調用。

算法步驟

  1. 輸入整數到變量
  2. 取模 (%) 和除以 10 分解各位數字
  3. 對數字數組進行排序
  4. 按位權重組合新數字

完整代碼實現

#include <stdio.h>
#include <stdlib.h>

// 函數:分解數字到數組
void decomposeDigits(int num, int digits[5]) {
    for (int i = 4; i >= 0; i--) {
        digits[i] = num % 10;
        num /= 10;
    }
}

// 函數:冒泡排序降序
void sortDescending(int arr[5]) {
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4 - i; j++) {
            if (arr[j] < arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 函數:組合新數字
int composeNumber(int digits[5]) {
    int result = 0;
    for (int i = 0; i < 5; i++) {
        result = result * 10 + digits[i];
    }
    return result;
}

int main() {
    int num, digits[5];
    
    printf("請輸入一個五位整數: ");
    scanf("%d", &num);
    
    // 驗證輸入
    if (num < 10000 || num > 99999) {
        printf("錯誤:請輸入五位整數!\n");
        return 1;
    }
    
    decomposeDigits(num, digits);
    sortDescending(digits);
    int newNum = composeNumber(digits);
    
    printf("原數字: %d\n", num);
    printf("排序後: %d\n", newNum);
    
    return 0;
}

運行示例

請輸入一個五位整數: 54321
原數字: 54321
排序後: 54321

請輸入一個五位整數: 12345
原數字: 12345
排序後: 54321

請輸入一個五位整數: 19283
原數字: 19283
排序後: 98321

擴展思考

  • 使用 qsort 庫函數替換自定義排序
  • 處理包含 0 的情況(如 10203 → 32100)
  • 泛化為任意位數整數處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved