Сначала перемешайте слова. Возьмите массив длины NUM_WORDS чисел и заполните его изначально индексами от 0 до NUM_WORDS-1. Перемешайте. Потом сделайте цикл по словам, который будет загадывать слово с индексом вот из этого массива. Внутри while(true) будет спрашивать пользователя, пока он не угадает. Т.е. вот этот ваш код весь выносится в отдельную функцию и вместо случайной генерации choice, получает его в качестве параметра. Можно через возвращаемое значение сообщать о том, что пользователь попросил выйти.
И еще, чтобы перемешать случайно слово/массив индексов надо делать вот так (а не так, как у вас):
for(int i = 0; i < length; ++i) //меняет буквы местами
{
int prev = (rand() % (i+1));
char temp = jumble[prev];
jumble[prev] = jumble[i];
jumble[i] = temp;
}
Надо не менять местами два случайных символа, а менять i-ый со случайным предыдущим. А то у вас не все перестановки генерируются одинаково равновероятно.