【问题标题】:I want to make a code of Print Reverse我想制作一个 Print Reverse 的代码
【发布时间】:2015-03-23 13:36:57
【问题描述】:

我想编写一个代码来以相反的顺序打印输入。

如果我输入整数

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

    }
}

【问题讨论】:

  • 逆序打印for(i=recurnum;i&gt;0;i++) printf("%d\n",num[i])需要使用数组来存储扫描的值
  • @Gopi 我认为如果我们先存储数字,您的方法会奏效。
  • 请修正你的代码格式,眼睛很痛
  • 对不起我的脏代码。我不是主修计算机科学的..请理解我..ㅜㅜ

标签: c recursion printf reverse


【解决方案1】:

在这里,您必须将输入数据存储另一种形式,然后以相反的顺序打印。如果不是数组,则需要其他形式的data structure

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

算法是这样的

  1. 在数组中读取和存储输入。
  2. 继续使用每个有效(成功)输入来增加索引。
  3. 完成后,从最高索引开始打印到较低索引。

您将获得 反向打印。 :-)

注意事项:

  1. 请记住,数组索引从0开始。
  2. 始终初始化您的局部变量。
  3. 尝试使用显式return 语句。很好的做法。

[ - 不,我不会在这里写代码。请先自己尝试,如果遇到任何问题,请回来。我们会在这里提供帮助。 :-)]

【讨论】:

    【解决方案2】:

    你可以在没有任何数组的情况下使用递归来做到这一点。递归堆栈将是存储,并将为您提供从堆栈中弹出的反转。我会用伪代码画出它:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      相关资源
      最近更新 更多