я решала проблемы программирования на языке C, наткнулся в книгеНеожиданное поведение цикла do-while в C?
код был следующим: -
#include<stdio.h>
#include<conio.h>
void main()
{
int num;
char another;
do
{
printf("Enter a Number");
scanf("%d",&num);
printf("Square Of The Entered Number Is = %d",num*num);
printf("Do You Still Want To continue (y/n)");
scanf("%c",&another);
}while(another=='y');
getch();
}
Теперь, когда я запустил эту программу в «TurboC++ MSDOSBox для Windows 7»
программа выходит даже если я введу «у» после того, как следующее заявление «Вы все еще хотите, чтобы продолжить (г/п)»
Похоже, он не выполняет никаких заявлений после этого один
, потому что я добавил еще одно заявление после того, как этот, как: -
scanf("%c",&another);
printf("another is = %c",another);
но ценность другого никогда не был напечатан. Программа выходила напрямую
Может быть, вы могли бы также прокомментировать, почему * другой * никогда не печатается? (вероятно, буферизованная печать) –
@ ring0 Возможно, это * * напечатан, но поскольку это новая строка (и у вас нет новой строки в строке формата), вы ее не заметите. При печати символов (или строки) может быть хорошей идеей создать их, например 'printf (« another is = '% c », другой);', тогда вы можете легко увидеть, есть ли что-то там. –
Спасибо. , Это сработало Довольно хорошо, и после этого исправления пробелов другой был напечатан. но я не мог понять логику новой строки, –