c - (C) 允许输入无限个数字,反转输入数字的顺序,输入 0 时结束程序

标签 c integer reverse infinite

我目前正在开发一个项目,我必须允许用户输入无限数量的数字,并反转这些输入数字的顺序,如果输入 0,则结​​束程序。我做了类似的事情,除了我设置了用户可以输入的数字数量,因此例如在下面的代码中,我允许用户仅输入三个数字,反转顺序并在输入 -1 时结束。

#include <stdio.h>
#define MAX 3 // Defining max amount of numbers to be entered to 3
main()
{
    int numbers[MAX], i, end;
    printf ("Please enter %d integers:\n", MAX);
        for (i = 0; i < MAX; i++){
         scanf("%d", &numbers[i]);
         if (numbers[i]==-1){ // Loop ends when -1 is entered
          for (end=i; end<MAX; end++)
           numbers[end]='\0'; // Nulls the value of blank locations in the array
        i=MAX;  
         }
        }
    printf ("\nThe values in reverse order are:\n");
    for (i = MAX-1; i >= 0; i--)
    {
        if(numbers[i]!='\0') // Will not print null values in the array
        printf("\n%d ", numbers[i]);
    }
    return 0;
}

我怎样才能实现这一目标?我猜我将无法使用数组,而且我对此还很陌生,所以......

最佳答案

不,数组不能动态增长(不是没有一些额外的修改,请参阅下面的评论),因此它们不能容纳无限数量的项目。

您需要一些可以扩展的结构,C 不提供这种结构,因此您必须使用第三方实现或编写自己的实现。堆栈最适合您的问题。

此外,循环必须一直持续到输入 -1 为止。带有break语句的无限循环,或者检查输入数字的do-while循环。

<小时/> 编辑:最初的问题针对的是 C++,我最初的答案如下,不再相关。

您想要研究 C++ 的 STL。 std::vector , std::dequestd::stack例如,对您的情况很有用。

关于c - (C) 允许输入无限个数字,反转输入数字的顺序,输入 0 时结束程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999987/

相关文章:

c++ - 为什么这个循环每次都向 sqdNumber_result 输出 0?

java - 反转 ArrayList<String>

c++ - 我应该如何以相反的顺序遍历 C++ 容器的元素?

java - 我对数据抽象定义的回答

c - Larry, Moe, Curly 互斥

C隐式转换?

c - 警告 : format ‘%s’ expects argument of type ‘char *’ , 但参数 2 的类型为 ‘char (*)[30]’ [-Wformat=]

objective-c - 如何从 NSRange 中提取整数值?

c - 如何在C中显示十六进制数?

java - 逐行写入文件