我目前正在开发一个项目,我必须允许用户输入无限数量的数字,并反转这些输入数字的顺序,如果输入 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::deque
或std::stack
例如,对您的情况很有用。
关于c - (C) 允许输入无限个数字,反转输入数字的顺序,输入 0 时结束程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999987/