#include #include #define MAX 50 void PrintIt(int Array[], int k) { int i; for (i = 0; i < k; i ++) printf(" %d", Array[i]); printf("\n"); } void Combs(int Array[], int n, int k, int pos, int low) { int i; if (pos >= k) PrintIt(Array, k); else { for (i = low + 1; i <= n - k + pos + 1; i ++) { Array[pos] = i; Combs(Array, n, k, pos + 1, i); } } } int main(int argc, char *argv[]) { int n, k, i; int B[MAX]; if (argc != 3) { printf("\n Two arguments expected.\n"); return 1; } k = atoi(argv[1]); n = atoi(argv[2]); if (n < 0 || k < 0) { printf("\n Positive numbers expected.\n"); return 2; } if (n > MAX || k > MAX) { printf("\n Numbers not greater than %d expected.\n", MAX); return 3; } if (k > n) { printf("\n The first number must not be greater than the second number.\n"); return 4; } Combs(B, n, k, 0, 0); return 0; }