Saiman Qureshi Ответов: 2

У меня возникли проблемы с циклом do while ?


когда пользователь дает значение типа int количество и gt;0, почему не сделать хотя печатает цикл "п" forvever и когда я удалить функции scanf()в цикл while, он печатает "п:" навсегда?

Что я уже пробовал:

#include <stdio.h>
#include <stdlib.h>
 int get_negative_int( void);
int main()
{
    int i=get_negative_int();
   printf("%i is negative integer",i);

   }
    int get_negative_int( void){ int n;
       do{
        printf("n is:");
scanf("%i",&n);
       } while (n>0);
       return n;

   }

2 Ответов

Рейтинг:
2

OriginalGriff

Потому что внутри цикла вы меняете значение n:

scanf("%i",&n);
То scanf функция считывает входные данные из стандартного входного потока-обычно консоли, набранного пользователем, - и помещает значение в переменную.
Так что пока n начинается как "фиксированное значение" , оно получает новое значение каждый раз, когда вы обходите цикл, и поэтому тест в конце цикла while цикл каждый раз смотрит на другое значение.

Это похоже на то, как фокусник на сцене проделывает один и тот же карточный трюк с десятью зрителями по очереди: каждый раз они выбирают карту, и каждый раз это другая карта. Когда один из них выбирает туза пик, фокусник перестает делать трюк.


Рейтинг:
1

Patrice T

Во-первых, совет: Научитесь делать отступы в своем коде, это поможет чтению.

#include <stdio.h>
#include <stdlib.h>
int get_negative_int( void);
int main()
{
	int i=get_negative_int();
	printf("%i is negative integer",i);

}
int get_negative_int( void){
	int n;
	do{
		printf("n is:");
		scanf("%i",&n);
	} while (n>0);
	return n;

}


Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.