c++ - 如何输出数组中的第一个、最后一个、第二个、倒数第二个等元素?
问题描述
如果我说我想要 10 个元素,例如 1、2、3、4、5、6、7、8、9 和 10,我希望输出为 1、10、2、9、3、8、4, 7、5、6。
而且我想不出办法。
#include <iostream>
using namespace std;
int main()
{
int n, v[1000], j=0;
cin >> n;
for(int i=0; i<n; i++){
cin >> v[i];
}
for(int i=0; i<n; i++){
cout << v[i] << " " << v[n - j] << " ";
j++;
}
return 0;
}
解决方案
你可以这样做:首先让我们认为n
是偶数,所以我们可以将数组的长度分成两个相等的部分,现在我们将转到第一部分,我们将数组前半部分的每个元素将从最后一个开始打印相应的元素。如果 Anfn
是奇数,那么最后我们需要打印中间那个。
#include <iostream>
using namespace std;
int main()
{
int n, v[1000], j=0;
cin >> n;
for(int i=0; i<n; i++){
cin >> v[i];
}
int nn = n/2;
for(int i=0; i<nn; i++){
cout << v[i] << " " << v[n - i-1] << " ";
}
if(n%2) cout << v[nn];
return 0;
}
推荐阅读
- javascript - 当我删除 index.css 时,Create-react-app 中断
- swift - CMTime在编码和解码媒体之外有任何实际应用吗
- sql - 修改分区表
- excel - 嵌套 For、Do while、Do until、If-else 循环
- c++ - 如何以新的方式编写线程安全的 OpenSSL 代码?
- java - JPA ManyToMany 在一个查询中检索 2 个列表
- testing - 使用 TestCafe 和 Electron,有没有办法让 Electron 应用程序自行关闭而不会挂起 TestCafe?
- python - 如何使用 strftime 计算期间(上午/下午)?
- node.js - node.js 是否限制并发回调的数量?
- java - URL 标识符的加密算法