C++冒泡排序 任意给定一个整数,把它重新组成一个最大值和最小值,求出两数的差。例如3721可以重新组成7231和1237两数之差为6084 输入:一个数 输出最大值和最小值的差
时间: 2024-04-12 22:30:28 浏览: 113
任意给定 n 个整数,求这 n 个整数序列的和、最小值、最大值
您好!对于给定的整数,我们可以使用冒泡排序算法对其进行重新排列,以获取最大值和最小值。下面是用 C++ 编写的冒泡排序算法以及计算差值的代码示例:
```cpp
#include <iostream>
using namespace std;
// 交换两个数的值
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// 冒泡排序
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
// 计算最大值和最小值的差值
int calculateDifference(int arr[], int n) {
bubbleSort(arr, n);
int maxVal = 0, minVal = 0;
for (int i = 0; i < n; i++) {
maxVal = maxVal * 10 + arr[i];
minVal = minVal * 10 + arr[n - i - 1];
}
return maxVal - minVal;
}
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
// 将数字转化为数组
int arr[10];
int n = 0;
while (num > 0) {
arr[n++] = num % 10;
num /= 10;
}
int difference = calculateDifference(arr, n);
cout << "最大值和最小值的差为:" << difference << endl;
return 0;
}
```
您可以将整数输入给程序,然后它将输出最大值和最小值的差。希望对您有帮助!如果有任何疑问,请随时问我。
阅读全文