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);
}