您将获得一个N个整数数组,您必须以相反的顺序打印整数。
1·; = N< = 1000
1< = A_i< = 10000,其中A_i是数组中的第i个整数。
4
1 2 3 4
4 3 2 1
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N, y; //declaring N as the length of array
cin >> N; //intakes the length as an input
if (N>=1 && N<=1000){ //checks whether the length satisfies the rules
int a[N]; // makes an array containing N elements
for (int x =1; x<N; x++){ //starts transcription on the array
cin>>y; //temporarily assigns the input on a variable
if (y>=1&&y<=10000){ //checks if the input meets rules
a[x]=y; //copies the variable on the array
}
}
for (int z = N; z>1; z--){ //runs a loop to print in reverse
cout<<a[z]<<endl;
}
}
return 0;
}
获得的输出
-1249504352
3
2
表示转录错误。
有人可以告诉我我在哪里弄错了吗?其次,是否可以直接检查输入是否满足要求而不是暂时为其声明变量?
答案 0 :(得分:3)
以下是惯用语c++11
中的解决方案,使用std::vector
,这是一个可动态调整大小的容器,可用于此类应用程序。
#include <vector>
#include <iostream>
#include <algorithm>
int main() {
int size;
std::cin >> size; // take in the length as an input
// check that the input satisfies the requirements,
// use the return code to indicate a problem
if (size < 1 || size > 1000) return 1;
std::vector<int> numbers; // initialise a vector to hold the 'array'
numbers.reserve(size); // reserve space for all the inputs
for (int i = 0; i < size; i++) {
int num;
std::cin >> num; // take in the next number as an input
if (num < 1 || num > 10000) return 1;
numbers.push_back(num);
}
std::reverse(numbers.begin(), numbers.end()); // reverse the vector
// print each number in the vector
for (auto &num : numbers) {
std::cout << num << "\n";
}
return 0;
}
有几点需要注意:
using namespace std
大部分时间都被视为不良做法。使用(例如)std::cin
代替来自std
命名空间的内容。
numbers.reserve(size)
不是正确性所必需的,但可以通过提前预留空间来加快程序。
for ( auto &num : numbers )
使用c++11
及- Destination ip address(es): 1.2.4.6, 2.2.4.6, 3.2.4.6,\n
4.2.4.6
及更高版本中提供的range-based for loop。
答案 1 :(得分:1)
您可以使for
循环索引从高到低:
for (int i = N-1; i > 0; --i)
{
std::cout << a[i] << "\n"; // Replace '\n' with space for horizontal printing.
}
std::cout << "\n";
这也适用于std::vector
。
使用std::vector
,您可以使用反向迭代器。还有其他技术可用(如其他答案)。