Car*_*rez 28
您可以使用循环并% 10提取每个数字.从0到9的外部循环可用于测试数字是否存在.如果存在,请将其打印出来.
在伪代码中:
n = integer // 51234
FOR digit = 0 TO 9
temp = n
REPEAT
IF temp % 10 = digit THEN PRINT digit
temp /= 10
UNTIL temp = 0
Run Code Online (Sandbox Code Playgroud)
编辑: gcc中的此测试显示它处理零和重复数字:
$ cat sortdigits.c
#include <stdio.h>
main () {
int n,digit,temp;
n = 43042025;
for (digit=0;digit<9;digit++)
for (temp=n;temp>0;temp/=10)
if (temp%10==digit) printf("%d",digit);
printf("\n");
}
$ ./sortdigits
00223445
Run Code Online (Sandbox Code Playgroud)
// Bubblesort
long sortNum(long n) {
while (true) {
long a = n % 10, p = 9;
bool s = false;
for (long r = n / 10; r; r/= 10) {
long b = r % 10;
if (a < b) {
n -= p * (b - a);
s = true;
} else a = b;
p *= 10;
}
if (!s) return n;
}
}
#include <iostream>
int main(int argc, char **argv) {
if (argc > 1) {
long n = strtol(argv[1], 0, 0);
std::cout << "Unsorted: " << n << std::endl;
n = sortNum(n);
std::cout << "Sorted: " << n << std::endl;
}
return 0;
}
$ g++ -Wall -Wextra bubble-int.cpp && ./a.exe 183974425
Unsorted: 183974425
Sorted: 123445789
Run Code Online (Sandbox Code Playgroud)
小智 5
您根本不需要编写程序,只需使用 shell 命令即可:
echo "51234" | sed 's+\(.\)+\1\n+g' | sort | tr -d '\n'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9433 次 |
| 最近记录: |