抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

总时间限制: 1000ms 内存限制: 65536kB

描述

将一个数组中的值按逆序重新存放。例如,原来的顺序为 8,6,5,4,1。要求改为 1,4,5,6,8。

输入

输入为两行:第一行数组中元素的个数 n(1<n<100),第二行是 n 个整数,每两个整数之间用空格分隔。

输出

输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。

样例输入

1
2
5
8 6 5 4 1

样例输出

1
1 4 5 6 8

来源

计算概论 05

解题方法

方法一

先按顺序输入(for(int i = 0; i < n; i++)),然后再按逆序输出(for(int i = n-1; i >= 0; i--)

方法二

先按逆序输入(for(int i = n-1; i >= 0; i--)),然后再按逆序输出(for(int i = 0; i < n; i++)

方法三:递归

递归的方法,先输入,然后递归输出。

Code

C

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <math.h>
int main() {
static int n, a[100], t;
scanf("%d", &n);
for(int i = 1; i<= n; i++) scanf("%d", &a[i-1]);
for(int i = n-1; i >= 0; i--) {
if(i == n-1) printf("%d", a[i]);
else printf(" %d", a[i]);
}
}

C++

非递归

1
2
3
4
5
6
7
8
9
10
11
12
#include <bits/stdc++.h>
using namespace std;
int main() {
array<int, 100> a {};
int n;
cin >> n;
for(int i = n-1; i >= 0; i--) cin >> a[i];
for(int i = 0; i < n; i++) {
cout << a[i];
if(i < n-1) cout << " ";
}
}

递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

void output(int n) {
if(n > 0) {
int a;
cin >> a;
output(n-1);
if(n == 1) cout << a;
else cout << " " << a;
}
}

int main() {
int n;
cin >> n;
output(n);
}