c语言输出1234组成三位数不重复数字按从小到大进行排列并且输出个数
时间: 2024-09-22 12:02:27 浏览: 37
在 C 语言中,你可以通过嵌套循环和数组来实现这个功能。首先,你需要创建一个包含所有可能的三位数组合的数组,并检查每个数是否满足条件(不重复)。然后使用排序算法(如冒泡排序或快速排序)将它们按照升序排列。最后统计并输出符合条件的个数。以下是简单的步骤:
1. 定义数组存储三位数,例如 `int arr[900]`,因为一共有900种可能的三位数(从100到999)。
2. 使用三重循环生成所有三位数组合,同时检查每一位数字是否已存在。如果存在,跳过该组合;否则,添加到数组中。
3. 对数组进行排序,这里可以先用一个临时数组存储排序后的结果,然后遍历原数组复制已排序的值。
4. 计算并输出满足条件的个数。
```c
#include <stdio.h>
#include <stdbool.h>
bool check_unique(int num) {
int digits[3];
int count = 0;
while (num > 0) {
digits[count++] = num % 10;
num /= 10;
}
for (int i = 0; i < 3 && i < count - 1; i++) {
if (digits[i] == digits[i + 1]) {
return false;
}
}
return true;
}
void generate_and_sort(int arr[], int size, int& count) {
int index = 0;
for (int i = 100; i <= 999; i++) {
if (check_unique(i)) {
arr[index++] = i;
}
}
// 排序数组,这里省略了实际排序部分,用其他库函数完成
// ...
count = index;
}
int main() {
int arr[900], count = 0;
generate_and_sort(arr, sizeof(arr), count);
printf("Sorted and unique numbers from 123 to 999 with no repetition:\n");
for (int i = 0; i < count; i++) {
printf("%d ", arr[i]);
}
printf("\nTotal number of such combinations: %d\n", count);
return 0;
}
```
阅读全文