将一个数组的值逆序输出,如:arr[10]={1,2,3,4,5,6,7,8,9,0},输出结果为:0,9,8,7,6,5,4,3,2,1

法一:(数组指针)

#include<stdio.h>
#include<stdlib.h>
void reverse(int arr[], int sz)
{
char *left = arr;
char *right = arr + sz - 1;
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
int i = 0;
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,0 };
reverse(arr, sizeof(arr) / sizeof(arr[0]));
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}


结果:

0 9 8 7 6 5 4 3 2 1

法二:(一般方法)

 
#include<stdio.h>
#include<stdlib.h>
void reverse(int arr[], int sz)
{
int left = 0;
int right = sz - 1;
while (left < right)
{
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
left++;
right--;
}
}
int main()
{
int i = 0;
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,0 };
reverse(arr, sizeof(arr) / sizeof(arr[0]));
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;
}


结果:

0 9 8 7 6 5 4 3 2 1