В функции lup в строке 157 (во втором блоке «if (isSingular == 0)») вы написали
printf("%.8lf ", b[k][i]);
эта строка записана в цикле for, итерирующем по i, в то время какk имеет оставшееся значение из последнего цикла.Условием прерывания этого цикла было то, что k = v (размер C, AKA "b" из строки кода выше).
Итак, в основном вы написали:
printf("%.8lf", b[MaxIndexOfB+1][i];
И это, вероятно, тот мерзавец, которого вы ищете.
Две заметки.Во-первых, я слишком долго был человеком .Net, поэтому я мог бы упустить что-то совершенно тривиальное здесь, в таком случае, извините.Во-вторых, когда вы хотите, чтобы люди читали ваш код (например, когда он публикует его для помощи), необходимо использовать более значимые имена или что-то еще, чтобы улучшить читабельность кода, но если вы не собираетесь этого делать, по крайней мере, избегайте путаницыкак передача переменной с именем "C" в параметр с именем "b", если ее можно избежать.