C 在不使用数组的情况下,如何在输入由换行符分隔的整数后显示输出?

C 在不使用数组的情况下,如何在输入由换行符分隔的整数后显示输出?,c,input,while-loop,C,Input,While Loop,任务: t表示输入的数量,后跟t行,每行包含一个整数n。 对于输入时给出的每个整数n,显示一行值n 样本输入: 4 1 2 5 3 1 2 5 6 如果输入的数字n之间用空格分隔并显示在同一行上,则此代码工作正常。但是,如果在换行符后提供输入数字,它会在每个输入值后显示相应的输出。如果您不想使用数组,那么我能想到的最好方法就是递归。但请注意,在内部,您的值将存储在堆栈帧中,并且您的值将以相反的方式打印(因为堆栈是LIFO)。这是你可以做的 void foo(i, t) { if(t==i

任务:

t
表示输入的数量,后跟
t
行,每行包含一个整数
n
。 对于输入时给出的每个整数
n
,显示一行值
n

样本输入:

4 1 2 5 3 1 2 5 6
如果输入的数字
n
之间用空格分隔并显示在同一行上,则此代码工作正常。但是,如果在换行符后提供输入数字,它会在每个输入值后显示相应的输出。

如果您不想使用数组,那么我能想到的最好方法就是递归。但请注意,在内部,您的值将存储在堆栈帧中,并且您的值将以相反的方式打印(因为堆栈是LIFO)。这是你可以做的

void foo(i, t)
{
    if(t==i)
        return;
    int num;
    scanf("%d",&num);

    foo(++i, t);

    printf("%d\n",num);
}

然而,请注意,值将以相反的方式打印,因为
堆栈
是后进先出

通常这种类型的输入输出用于编码竞争,其中用户期望将预期输出与实际输出匹配

尝试使用命令提示符或联机粘贴输入并检查它。这是完全好的,因为输出是预期的

如果一次给出全部输入,需要多少时间

它首先读取
t
,然后读取
num
并打印数字,但您的打印实际上是在输入之后。这就是在编码竞赛中检查输出的方式


PS:如果你想在输入后使用数组。

如何将
1 2 3 5 3
等同于
1 2 3 5 6
?此类测试用例仅用于测试输出以匹配预期输出。因此,您不必担心订购问题。尝试使用命令提示符并进行检查。它工作得很好。如果代码正常,你就不走运了<代码>printf(“%d”和&num)应该是
printf(“%d”,num)使用链表而不是数组。使用文件而不是数组。
void foo(i, t)
{
    if(t==i)
        return;
    int num;
    scanf("%d",&num);

    foo(++i, t);

    printf("%d\n",num);
}