Во-первых - неправильное условие окончания внутреннего цикла.
Во-вторых - вы используете переменную 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++;
}