Как вывести выходные данные после ввода некоторых целых чисел, разделенных новой строкой, без использования массивов?
Задача:
t
обозначает количество входных данных, за которыми следуют строкиt
, каждая из которых содержит одно целое числоn
. Для каждого целого числаn
, заданного на входе, выведите строку со значениемn
.Пример ввода:
4 1 2 5 3Пример вывода:
1 2 5 6
Вывод должен появиться после того, как все строки целого числа n
будут приняты в качестве входных данных, то есть он не должен отображать выходные данные после каждой строки ввода.
Как можно ли это сделать с помощью цикла while
без использования массива для хранения входных чисел?
while(i<t)
{
scanf("%d",&num);
printf("%d",&num);
i++;
}
Этот код работает нормально, если входные числа n
разделены пробелом и находятся в одной строке. Но если входные числа указаны после новой строки, то после каждого входного значения выводится соответствующий вывод.2 ответа:
Обычно такой тип входного вывода используется в конкуренции кодирования, где ожидается, что пользователь будет соответствовать ожидаемому выходу фактическому выходу.
Попробуйте вставить входные данные с помощью командной строки или онлайн-компиляторов и проверьте это. Это совершенно нормально, так как результат такой, как и ожидалось.
Как это происходит, если общий ввод дается сразу.
Сначала он читает
t
, а затем он читаетnum
и печатает номер, но ваша печать на самом деле после ввода. Именно так проверяются выходные данные в соревновании по кодированию.PS: Если вам нужно все после ввода, используйте массивы.
Если вы хотите сделать это без использования массива, то лучший способ, который я мог бы придумать, - это рекурсия. Но обратите внимание, что внутренне ваши значения будут храниться в стековых фреймах, а ваши значения будут напечатаны в обратном порядке(потому что stack-это LIFO). Вот как вы можете это сделать,
Обратите внимание, однако, что значения будут напечатаны в обратном порядке, так какvoid foo(i, t) { if(t==i) return; int num; scanf("%d",&num); foo(++i, t); printf("%d\n",num); }
stack
является LIFO