C++ 数组不会在C+中向后填充+;

C++ 数组不会在C+中向后填充+;,c++,C++,我试图将数组从20向后填充到0,但每当我打印它时,它仍然会向前打印。例如,我想输入1,2,3,4,5,然后得到5,4,3,2,1 我试图做一个for循环,从20倒数到0,但是当我打印它时,它仍然不正确。有什么帮助吗 int temp; for (int i = 20; i > 0; i--) { cout << "Please enter the next number. Use a -1 to indicate you are done: "; cin >

我试图将数组从20向后填充到0,但每当我打印它时,它仍然会向前打印。例如,我想输入1,2,3,4,5,然后得到5,4,3,2,1

我试图做一个for循环,从20倒数到0,但是当我打印它时,它仍然不正确。有什么帮助吗

int temp;
for (int i = 20; i > 0; i--)
{
    cout << "Please enter the next number. Use a -1 to indicate you are done: ";
    cin >> temp;
    while(temp > 9 || temp < -2)
    {
        cout << "You may only put numbers in 0 - 9 or -1 to exit. Please enter another number: ";
        cin >> temp;
    }
    arr1[i] = temp;
    cout << arr1[i];
}
for (int i = 21; i > 0; i--)
{
    cout << arr1[i];
int-temp;
for(int i=20;i>0;i--)
{
温度;
而(温度>9 | |温度<-2)
{
温度;
}
arr1[i]=温度;
不能0;我--)
{

您的阵列大小是多少? 假设大小为21(索引从0到20)。

首先请注意,您的第一个循环永远不会填充索引0处的数组(像这样的
arr1[0]=temp
将永远不会在您的第一个循环中执行)。
如果要避免这种行为,您应该像这样编写第一个for循环:

用于(inti=20;i>=0;i--){
..
}

第二个for循环存在一些问题:

  • 您正在向后遍历数组,而您希望执行相反的操作
  • 循环从索引越界(21)开始
  • 循环可能会打印一些未定义的值(您应该记住上次添加值的索引)
  • 我建议您使用其他数据结构,如堆栈,但如果您想使用数组,可以按如下方式编辑代码:

    int i;
    for (i = 20; i >= 0; i--){...}
    for (i; i <= 20; ++i) { cout << arr1[i]; }
    
    编辑:请注意,在插入-1后,您的代码和我的代码都不会停止请求新值。

    如果要实现此行为,应使用while循环,而不是第一个for循环,并检查退出条件。

    您正在向后打印。arr1、20、21或22有多大?为什么要将[0]省略?
    for(int i=0;i<20;++i){cout
    int i=21;
    int i=20;
    不同。你的数组有多大。你真的应该有时间学习如何使用调试器?他也不会检查第一个循环的退出条件。@Bob\uuuuu谢谢你!我已经添加了一个注释。
    int lastAdded;
    for (int i = 20; i >= 0; i--){
        ...
        lastAdded = i;
    }
    for (int i = lastAdded; i <= 20; i++) { cout << arr1[i]; }