练习7-3 将数组中的数逆序存放 (20分)
题目描述
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。
输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。
输入样例:
4
10 8 1 2
输出样例:
2 1 8 10
这题主要注意输出的格式。另外,可以只用一个数组将自身逆转输出。
答案
【方法1——直接反着输出】
#include<stdio.h>
#include<string.h>
int main() {
int n, a[10];
memset(a, 0, sizeof(a));
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", a + i);
}
for (int j = n - 1; j >= 0; j--) {
if (j == 0) {
printf("%d", a[0]);
} else {
printf("%d ", a[j]);
}
}
return 0;
}
【方法2——逆置数组再输出】
#include<stdio.h>
#include<string.h>
int main() {
int n, a[10];
int min, max;
memset(a, 0, sizeof(a));
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", a + i);
}
// 逆转数组
for (min = 0, max = n - 1; min < max; min++, max--) {
int temp = a[min];
a[min] = a[max];
a[max] = temp;
}
for (int j = 0; j < n; j++) {
if (j == n - 1) {
printf("%d", a[n - 1]);
} else {
printf("%d ", a[j]);
}
}
return 0;
}