C++ 数组不会在C+中向后填充+;
我试图将数组从20向后填充到0,但每当我打印它时,它仍然会向前打印。例如,我想输入1,2,3,4,5,然后得到5,4,3,2,1 我试图做一个for循环,从20倒数到0,但是当我打印它时,它仍然不正确。有什么帮助吗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 >
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){coutint 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]; }