我正在尝试从20到0向后填充数组,但每当我打印出来时它仍会向前打印。例如,我想放入1,2,3,4,5并将其作为5,4,3,2,1。
我试图做一个从20到0向后计数的for循环但是当我打印它仍然出现错误。有什么帮助吗?
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];
答案 0 :(得分:2)
你阵列的大小是多少? 假设大小为21(索引从0到20)。
首先请注意,你的第一个循环永远不会在索引0处填充数组(类似于arr1[0] = temp
的东西永远不会在你的第一个循环内执行)。
如果你想避免这种行为,你应该像这样编写你的第一个for循环:
for (int i = 20; i >= 0; i--){
... }
。
第二个for循环有一些问题:
我建议您使用其他数据结构,例如Stack,但如果您想使用数组,可以按如下方式编辑代码:
int i;
for (i = 20; i >= 0; i--){...}
for (i; i <= 20; ++i) { cout << arr1[i]; }
如果您不想在循环之外声明int i;
,可以执行以下操作:
int lastAdded;
for (int i = 20; i >= 0; i--){
...
lastAdded = i;
}
for (int i = lastAdded; i <= 20; i++) { cout << arr1[i]; }
编辑:请注意,在插入-1后,您的代码和我的代码都不会停止要求新值 如果要实现此行为,则应使用while循环而不是第一个for循环,并检查退出条件。