我想制作Print Reverse的代码

时间:2015-03-23 13:36:58

标签: c recursion printf reverse

我想制作一个代码,以相反的顺序打印输入。

如果我输入整数

  

6

     

20

     

14

     

5

我想读取不使用数组的数据只是方法

喜欢5 14 20 6,而非5 41 02 6。

接下来我该怎么办?请帮帮我。

#include <stdio.h>

int main(void)
{
    int reverResult;
    int num;
    int i;
    int recurnum=0;
    printf("Test PrintReverse\n");
    printf("Number Please\n");

    scanf("%d",&recurnum);
    printf("%d is the number of recursion\n", recurnum);

    for(i=1 ; i<=recurnum ; i++)
    {
        scanf("%d\n",&num);
        printf("%d\n", num);

    }
}

2 个答案:

答案 0 :(得分:2)

如果不是数组,则需要其他形式的data structure

[假设需要最简单的方法]这里你想要的是使用array int来保存输入值。

算法就像这样

  1. 在数组中读取和存储输入。
  2. 使用每个有效(成功)输入继续递增索引。
  3. 完成后,从最高指数开始打印到较低位置。
  4. 并且您将反向打印。 : - )

    注意:

    1. 请记住,数组索引从0开始。
    2. 始终初始化您的本地变量。
    3. 尝试使用显式return语句。好的做法。
    4. [P.S. - 不,我不会在这里写代码。请先尝试一下,如果遇到任何问题,请回来。我们会来帮忙。 :-)]

答案 1 :(得分:0)

您可以使用递归在没有任何数组的情况下执行此操作。递归堆栈将是存储,并将为您提供从堆栈弹出的逆转。我将用伪代码草绘它:

def recursive_read()
    x = read_value()           // attempt to read a value into x
    if x != EOF_INDICATOR      // read attempt was NOT end-of-file
        recursive_read()       // recursively attempt the next read
        print x                // print the current x when control returns here
    endif
    return      // got EOF, or finished reading/printing. Either way, we're done here!
enddef