Scanf возвращает пробельные символы.Поскольку вы ищете только «j» или «m», вы их не видите, но счетчик все еще увеличивает счетчик каждый раз в цикле.
Если вы добавляете оператор внутри цикла, вы можете видеть это:
do
{
...
printf("(vote='%c' counter=%d)\n", vote, counter);
...
} while (counter<n);
Мне кажется, что если вы введете три электората, ваш реальный входной поток будет: «3», «\ n», «m», «\ n».3 потребляется scanf, но '\ n' (когда вы нажали Enter) заканчивает тем, что является первым голосом, 'm' является вторым голосом, а другой '\ n' является третьим голосом.
Существует несколько способов исправить это, но проще всего просто игнорировать любые символы, которые не являются голосами:
if (vote=='j')
{
sumj++;
counter++;
}
else if (vote=='m')
{
summ++;
counter++;
}
Хотя пробельные символы все еще вызывают прохождение цикла, он будетничего не делать.