PTA 7-312 逆置一维数组
分数 10
作者 usx程序设计类课程组
单位 绍兴文理学院
编写程序,以指针的方式,就地逆置一维数组。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入数据个数n,然后输入n个整数。
输出格式:
对于每组测试,在一行上输出逆置之后的结果。数据之间以一个空格分隔。
输入样例:
2
4 1 2 5 3
5 4 3 5 1 2
输出样例:
3 5 2 1
2 1 5 3 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main(){
int T, n, i, j, m;
scanf("%d", &T);
for(int t = 1; t <= T; t++){ //测试组
scanf("%d", &n);
int Arr[n];
int *p = &Arr; //指针指向数组
for(int i = 0; i < n; i++){ //遍历数组
scanf("%d", &Arr[i]);
}
for(i = 0, j = n-1; i < n/2; i++, j--){ //逆置
m = *(p+i);
*(p+i) = *(p+j);
*(p+j) = m;
}
for(int i = 0; i < n; i++){ //输出结果
if(i == n-1){ //末尾空格处理
printf("%d\n", Arr[i]);
break;
}
printf("%d ", Arr[i]);
}
}
return 0;
}
解题思路:
定义一个指针指向数组,用地址进行交换该地址的值,达到数组数据逆置
注: 输出格式
归属知识点:
数组
指针
循环结构