任意一个四位正整数(4位数字相同者除外), 将各位数字组成一个最大数和最小数,两数相减并重复这一过程必得6174。 输入 输入一个四位正整数。 输出 输出文件包含多行, 组成一个最大数和一个最小数就输出一行,直道结果为6174,c++,iostream,不能使用函数和字符串
时间: 2024-04-11 10:27:38 浏览: 75
可以使用以下代码来实现这个功能:
```cpp
#include <iostream>
int getMaxNumber(int num) {
int arr[4];
for (int i = 3; i >= 0; i--) {
arr[i] = num % 10;
num /= 10;
}
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 4; j++) {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
int maxNum = 0;
for (int i = 0; i < 4; i++) {
maxNum = maxNum * 10 + arr[i];
}
return maxNum;
}
int getMinNumber(int num) {
int arr[4];
for (int i = 3; i >= 0; i--) {
arr[i] = num % 10;
num /= 10;
}
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j < 4; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
int minNum = 0;
for (int i = 0; i < 4; i++) {
minNum = minNum * 10 + arr[i];
}
return minNum;
}
int main() {
int num;
std::cin >> num;
while (num != 6174) {
int maxNum = getMaxNumber(num);
int minNum = getMinNumber(num);
num = maxNum - minNum;
std::cout << maxNum << " " << minNum << std::endl;
}
return 0;
}
```
这段代码中,`getMaxNumber`函数用于获取四位数中各个数字组成的最大数,`getMinNumber`函数用于获取四位数中各个数字组成的最小数。在主函数中,我们首先输入一个四位正整数,然后循环执行以下操作:获取最大数和最小数,计算两者之差,并将结果赋值给`num`。如果`num`等于6174,则结束循环;否则,输出最大数和最小数,并继续下一轮循环。
阅读全文