輸入一個五位整數,將其五個數字按從大到小排序,組成新的五位整數輸出。要求使用函數調用。
%) 和除以 10 分解各位數字#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 庫函數替換自定義排序