Как вывести выходные данные после ввода некоторых целых чисел, разделенных новой строкой, без использования массивов?


Задача:

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 3

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