c语言编程 输入一个三个数,问这三个数能组成多少个数(,并输出的所有情况每个数不重复,且只能与其他数进行排列组合) 如输入1,2,3 能组成1,2,3,12,13,21,23,31,32
时间: 2024-11-15 07:19:59 浏览: 18
在C语言编程中,为了实现这个功能,你可以使用递归的方式来生成所有可能的三位数的排列组合。这里我们假设用户输入的是三个不同的整数。以下是一个简单的示例程序:
```c
#include <stdio.h>
// 辅助函数用于交换两个数字
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 排列函数,参数为数组、起始位置和结束位置
void permute(int arr[], int l, int r) {
if (l == r)
printf("%d ", arr[l]);
else {
for (int i = l; i <= r; i++) {
// 交换元素
swap(&arr[l], &arr[i]);
// 递归处理剩余部分
permute(arr, l + 1, r);
// 回溯:撤销交换,恢复原状态
swap(&arr[l], &arr[i]);
}
}
}
int main() {
int nums[3];
printf("请输入三个不同的整数(以空格分隔):");
scanf("%d %d %d", nums);
// 检查输入是否合法
if (nums[0] != nums[1] && nums[0] != nums[2] && nums[1] != nums[2]) {
// 排序数组以便于输出
for (int i = 0; i < 3; i++)
for (int j = i + 1; j < 3; j++)
if (nums[i] > nums[j])
swap(&nums[i], &nums[j]);
printf("可以组成的不重复数有:\n");
permute(nums, 0, 2);
printf("\n");
} else {
printf("输入的三个数不能构成不重复的组合。\n");
}
return 0;
}
```
当你运行此程序并输入1, 2, 3时,它将输出 `1 2 3 12 13 21`。
阅读全文