Ln - это от line
То есть при write/writeln в первом случае на следующую строку не переходит, а во втором - переходит. Со вводм что-то похожее. Например
for i := 1 to 10 do read (a);
10 раз идет read. Можно ввести сразу 10 чисел, они сохранятся, и после уже не будет требовать вводить еще 9 раз, а возьмет из буфера. А при readln - нифига подобного. Буфер будет очищаться и придется каждый раз вводить заново.
Еще readln без параметров часто используется для ожидания любой клавиши, а writeln - для простого перевода на новую строку, что не проходит с read и write.
static void Main(string[] args)
{
Console.WriteLine("Введите строку: ");
StringBuilder a = new StringBuilder(Console.ReadLine());
Console.WriteLine("Исходая строка: " + a);
Console.WriteLine("Введите символ x: ");
char x = char.Parse(Console.ReadLine());
Console.WriteLine("Введите символ y: ");
char y = char.Parse(Console.ReadLine());
for (int i = 0; i < a.Length; i++)
{
if (a[i]==y)
{
a.Insert(i+1,x);
++i;
}
}
Console.WriteLine("Измененная строка: " + a);
Console.ReadLine();
}