#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
short int num[6];
short int arr[20][3]; //組合結果,C6,3 = 20
short int i, j, k;
short int len = 6, m = 0; //陣列num長度和組合個數
//輸入
printf("Input 6 number(separated by space):\n");
for (i = 0; i < 6; i++)
scanf_s("%hd", &num[i]);
//剔除重複資料
for (i = 0; i < len - 1; i++)
for (j = i + 1; j < len; j++)
if (num[i] == num[j])
num[j] = num[--len]; //陣列末端值覆蓋重複值,並且陣列長度-1
j--;
}
//進行組合
for (i = 0; i < len - 2; i++)
for (j = i + 1; j < len - 1; j++)
for (k = j + 1; k < len; k++)
arr[m][0] = num[i];
arr[m][1] = num[j];
arr[m][2] = num[k];
m++;
//輸出
printf("There are %hd kinds of combination:\n", m);
for (i = 0; i < m; i++)
printf("%hd: %hd, %hd, %hd\n", i, arr[i][0], arr[i][1], arr[i][2]);
system("pause");
return 0;
執行結果:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
short int num[6];
short int arr[20][3]; //組合結果,C6,3 = 20
short int i, j, k;
short int len = 6, m = 0; //陣列num長度和組合個數
//輸入
printf("Input 6 number(separated by space):\n");
for (i = 0; i < 6; i++)
scanf_s("%hd", &num[i]);
//剔除重複資料
for (i = 0; i < len - 1; i++)
for (j = i + 1; j < len; j++)
if (num[i] == num[j])
{
num[j] = num[--len]; //陣列末端值覆蓋重複值,並且陣列長度-1
j--;
}
//進行組合
for (i = 0; i < len - 2; i++)
for (j = i + 1; j < len - 1; j++)
for (k = j + 1; k < len; k++)
{
arr[m][0] = num[i];
arr[m][1] = num[j];
arr[m][2] = num[k];
m++;
}
//輸出
printf("There are %hd kinds of combination:\n", m);
for (i = 0; i < m; i++)
printf("%hd: %hd, %hd, %hd\n", i, arr[i][0], arr[i][1], arr[i][2]);
system("pause");
return 0;
}
執行結果: