【C系列5.14】指针专题之逆序排列 1999
Time Limit: 1 s Memory Limit: 32 MB
Submission:105 AC:60 Score:18.07
Description
Alex又遇到了一个新问题:将n个数按输入时顺序的逆序排列。
Input
输入包含多组测试数据,每组测试数据含两行。
第一行包含一个正整数N(N<100),接下去一行是N个数字,每个数字的范围是0到100。
Output
输出这n个数字的逆序排列。
Samples
input:
5
1 3 2 1 5
output:
5 1 2 3 1
下附AC代码:
#include <stdio.h>
void reverse(int *p, int m);
int main() {
int i, n;
int *p, a[10000];
while (scanf("%d", &n) != EOF) {
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
p = &a[0];
reverse(p, n);
for (i = 0; i < n; i++) {
printf("%d", a[i]);
if (i != n - 1)
printf(" ");
}
printf("\n");
}
return 0;
}
void reverse(int *p, int m) {
int i;
int temp, *p1, *p2;
for (i = 0; i < m / 2; i++) {
p1 = p + i;
p2 = p + (m - 1 - i);
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}