Во-первых - неправильное условие окончания внутреннего цикла.
Во-вторых - вы используете переменную res в двух качествах - как начальное значение последовательности, и как текущее значение последовательности. Очевидно, это должны быть две разные переменные.
В-третьих - почему вы на каждой итерации внешнего цикла в качестве начального значения последовательности задаёте 2? Очевидно, что так вы будете получать каждый раз один и тот же результат, что вряд ли входит в ваши планы.
В-четвёртых - зачем для внутреннего цикла использовать for? Достаточно и while.
Вот вам исправленный вариант вашего кода, думайте:
int
  N = 6,
  start = 2;
for (int i = 0; i < N; i++) {
  int val = start;
  printf("\n%d: ", val);
  while (val != 1) {
    if (val % 2 == 0) {
      val = val / 2;
    } else {
      val = val * 3 + 1;
    }
    printf("\t%d", val);
  }
  start++;
}