Вы объявляете response
как символ, но в первый раз, когда вы пытаетесь инициализировать его с консоли
cin>>response;
ваш ввод содержит 3 символа («да» в третьей строке вашего примера [1]), поэтому response
получает «y», но «e» и «s» также находятся во входном потоке, поэтому причина, по которой во время следующего чтения с консоли:
cin>>response2;
response2
инициализируется с 'e', что вызывает печать дополнительных Can birds sing?.....Question one
, после чего 'response2' получает 's' и печатает дополнительную строку снова.
Я рекомендую вам удалить все избыточные переменные и использовать только std :: string response
. Тогда будет сложнее ошибиться.